我有一个带有一些列表框的表单,我可以使用它从列表中选择一个值。我有一个使用表单值作为过滤器的查询。组合工作正常 - 直到我尝试使用VBA脚本打开查询。此时,我收到一条错误消息,指出查询期望参数。代码段是:
查询 - [实体选择] - 使用表单(一次只使用一个列表框 - 这将找出它是哪一个,并从表[实体列表]中选择适当的项目):
SELECT val(forms.selections.select_year) as Yr, *
FROM [entity list]
where [group]=forms!selections!select_group
UNION select val(forms.selections.select_year) as Yr, * from [entity list] where [G_SG]=forms!selections!select_subgroup
UNION select val(forms.selections.select_year) as Yr, * from [entity list] where [ID_Name]=forms!selections!select_entity
UNION select val(forms.selections.select_year) as Yr, * from [entity list] where forms!selections!select_group like "All*";
查询 - 使用先前查询的结果:
SELECT ...
FROM [DTXX Detail]
INNER JOIN [Entity selections] ON ([DTXX Detail].Yr = [Entity selections].Yr) AND ([DTXX Detail].entityid = [Entity selections].EntityID)
ORDER BY ...
这些工作正常 - [entity selections]查询返回相应的行,第二个查询成功使用1st on作为过滤器并返回相应的行。
然后,我添加了一个VBA脚本,将上面的一些报告输出到Excel文件中(此脚本在其他数据库中没有任何形式)。脚本的相关部分是
Source = "[" & Exports.Fields("Source") & "]"
Source = "Select * from " & Source & ";"
If ((Source <> "") And (WS_Name <> "")) Then
'Get the source data
Set source_data = DB.OpenRecordset(Source)
Source
最终为Select * from [report - details]
,这是上面第二个查询的名称。没什么复杂的。我得到的错误是:
Runtime error 3601. Too few parameters. Expected 4
在脚本处于活动状态时,查询似乎无法访问表单。但是在监视窗口中,脚本知道所有表单控件的值。
你能帮帮忙吗?谢谢。