我的应用程序没有自己的“脚本语法”。它旨在使用JET从Microsoft Access数据库创建简单的报表。这是一个简单的示例:
REQUIRES "Min number of away talks:" AS $iMinNumAwayTalks
LOOP FROM "Home Talks" NODATERANGE WHERE "Last Given" ISMOREOREQUAL "$Today" SORTBY "Last Given"
SHORTDATE_FIELD "Last Given"
TAB =5>
TEXT "Week: "
VARIABLE_FIELD "Last Given" "$iWeekNo#CUSTOMDATE[%W]"
TEXT "$iWeekNo"
$iAwayTalkCount = 0
LOOP FROM "Away Talks" NODATERANGE WHERE "Talk Date" ISMOREOREQUAL "$Today" SORTBY "Talk Date"
VARIABLE_FIELD "Talk Date" "$iAwayWeekNo#CUSTOMDATE[%W]"
IF "$iAwayWeekNo" IS "$iWeekNo"
$iAwayTalkCount = $iAwayTalkCount + 1
END_IF
END_LOOP
TAB =10>
TEXT "# Away: "
TEXT "$iAwayTalkCount"
TAB =15>
TEXT "$iMinNumAwayTalks"
TEXT " Exceed? "
IF "$iAwayTalkCount" ISMORE "$iMinNumAwayTalks"
TEXT "Yes"
END_IF
IF "$iAwayTalkCount" ISLESSOREQUAL "$iMinNumAwayTalks"
TEXT "No"
END_IF
EOL
END_LOOP
基本上是查看两个表,以计算出指定字段中具有相同周编号(从星期一开始)的记录。
我的问题与我使用的该查询有关:
LOOP FROM "Away Talks" NODATERANGE WHERE "Talk Date" ISMOREOREQUAL "$Today" SORTBY "Talk Date"
此查询的不利之处在于,它选择了比今天更大的所有记录,然后我必须检查每条记录,以查看“通话日期”字段是否具有相同的星期数。
现在,我的脚本语法也支持原始SQL循环。因此,可以使用原始的Microsoft Access JET SQL查询执行以下操作:
选择所有外出谈话,其中通话日期字段为第X周(其中“周”为每周开始的星期一 )?
我尝试使用以下条件在Access 2016中进行手动测试:
SELECT [Away Talks].[Talk Date]
FROM [Away Talks]
WHERE ((DatePart('ww',[Talk Date],'vbMonday')=45));
但是我有一个错误:
我在做什么错了?
答案 0 :(得分:3)
您在查询中提供的vbMonday
是字符串文字('vbMonday'
),而不是数字值。
不幸的是,您不能在查询中使用VBA常量vbMonday
,因此必须使用其等效的数字:2
要自行查找此数值,您可以在VBE即时窗口中输入?vbMonday
,或例如通过在VBE中按F2
来打开“对象浏览器”窗口。
您可以在其中搜索vbMonday
,然后在窗口底部看到它的数值。
答案 1 :(得分:1)