You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access窗体数据源日期格式化问题及DSum计算报错排查

Access日期处理报错与Format函数异常解决方案

一、Format函数返回异常的原因及解决

德语版Access中,日期格式占位符与英文版本不同,你使用的dd和yyyy会被识别为字面量而非日期变量:

  • 日的正确占位符是tt(对应英文dd)
  • 年的正确占位符是jjjj(对应英文yyyy)
  • 月的占位符mm与英文一致

同时,Access自动修改引号是因为控件源中双引号需要转义,改用单引号包裹格式字符串可避免该问题。

正确的格式写法:

=Format(Datum();'tt-mm-jjjj')

执行后会返回02-07-2023这类正确格式的日期。

二、DSum计算上月总和的报错解决

报错核心是日期字符串拼接受区域格式影响,Access无法正确解析日期。推荐两种可靠方案:

方案1:使用ISO日期格式拼接(不受区域影响)

先计算上月的起始和结束日期,转换为yyyy-mm-dd格式后拼接进条件:

=DSum("Betrag"; "tbl_Ausgaben"; _
    "[Datum] > #" & Format(DateAdd('m'; -1; Datum()) - Day(DateAdd('m'; -1; Datum())); "yyyy-mm-dd") & "# " & _
    "AND [Datum] <= #" & Format(Datum() - Day(Datum()); "yyyy-mm-dd") & "#")

方案2:直接用日期函数生成条件(更简洁可靠)

利用DateSerial函数直接计算上月第一天和最后一天,无需拼接字符串,完全规避格式问题:

=DSum("Betrag"; "tbl_Ausgaben"; _
    "[Datum] >= DateSerial(Year(Datum()); Month(Datum())-1; 1) " & _
    "AND [Datum] <= DateSerial(Year(Datum()); Month(Datum()); 0)")

注:DateSerial(Year(Datum()); Month(Datum()); 0)会自动返回上月最后一天,比手动计算更稳定。

内容的提问来源于stack exchange,提问作者Wima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 16:45:01