我正在创建一个用于跟踪工作时间的简单数据库。这个想法是:
工作日的计算应考虑周末(周六,周日)和假日表的假期。
我从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查询表达式中的日期语法错误
感谢任何帮助。
答案 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)
确保日期在VBA中以MM / DD / YYYY顺序排列。 始终即可。我一般用:
{{1}}
DCount的第二个参数是 strHolidays 。这看起来不像表/查询的名称。该参数应该是表/查询的名称。