MSACCESS 2010 VBA;语法查询表达式中的日期错误

时间:2017-11-14 14:35:33

标签: vba ms-access

我正在创建一个用于跟踪工作时间的简单数据库。这个想法是:

  1. 您每天只需要输入员工不工作的日子(s tartDate,endDate,absenceType ),
  2. 然后计算整月或选定时段的工作日。
  3. 工作日的计算应考虑周末(周六,周日)和假日表的假期。

    我从MSDN(Counting the Number of Working Days in Access 2007)获取了一个函数示例并将其放入MS Access 2010数据库中的模块中,但每次运行查询时都会出现此错误。

    通常会出现同样的错误,试图从某个地方在另一个示例数据库中运行查询。

    问题出在 strWhere 子句中:

    strWhere = "[Holiday] >=#" & startDate & "# AND [Holiday] <=#" & endDate & "#"
    
    ' Count the number of holidays.
    nHolidays = DCount(Expr:="[Holiday]", Domain:=strHolidays, Criteria:=strWhere)
    Workdays = nWeekdays - nHolidays
    

    以下链接提供了两个数据库的错误消息

      

    运行时错误3075查询表达式中的日期语法错误

    enter image description here

    感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

您必须在日期的字符串表达式上强制使用格式。习惯于使用ISO序列 yyyy-mm-dd ,因为它适用于所有地方:

strHolidays = "NameOfYourTable"
strWhere = "[Holiday] >= #" & Format(startDate, "yyyy\/mm\/dd") & "# AND [Holiday] <= #" & Format(endDate, "yyyy\/mm\/dd") & "#"

' Count the number of holidays.
nHolidays = DCount("*", strHolidays, strWhere)

答案 1 :(得分:0)

过去我遇到的问题是VBA并不总是尊重区域日期设置。在连接之前尝试将其强制为美国格式

strWhere = "[Holiday] >=#" & Format(startDate, "MM/dd/yyyy") & "# AND [Holiday] <=#" & Format(endDate, "MM/dd/yyyy") & "#"

答案 2 :(得分:0)

  1. 确保日期在VBA中以MM / DD / YYYY顺序排列。 始终即可。我一般用:

    {{1}}

  2. DCount的第二个参数是 strHolidays 。这看起来不像表/查询的名称。该参数应该是表/查询的名称。