似乎不能像通常那样在VBA中构建查询。
我有一个表单,用户可以从列表等中选择参数。他们单击“提交”按钮,该按钮应过滤一个表,以便他们可以仅对那些记录进行更改。该表以相同的形式嵌入到表单的底部。在他们设置参数并提交之前为空。
因为它是表单中的表格,并且是Subform / Subreport,据我所知,填充它的唯一方法是使用预建的Access查询。因此,我需要传递变量以使其动态。
因此查询numberSections
如下:
SELECT title, group, group_num
FROM groupings
WHERE co = [co] AND project = [project]
ORDER BY ID;
据我了解,方括号表示变量。
VBA是这样的:
Function RunQueryForGroupings(coProj As Collection)
Dim qdf As DAO.QueryDef
Set qdf = CurrentDb.QueryDefs("numberSections")
qdf.Parameters("co").Value = coProj(1)
qdf.Parameters("project").Value = coProj(2)
qdf.Execute
Set qdf = Nothing
End Function
到达qdf.Parameters("co").Value = coProj(1)
时出现以下错误:
Run-time error '3265':
Item not found in this collection.
起初,我认为coProj(1)
由于某种原因没有值,但之所以如此,是因为我可以Debug.Print(coProj(1))
,所以它与声明有关。
有什么建议吗?
答案 0 :(得分:1)
将参数设置为querydef将对作为表单记录源的SELECT查询不利。这仅对打开记录集有用。
qdf.Execute
仅对操作查询(INSERT,UPDATE,DELETE)有效。
但这没关系-如果要动态填写子表单,只需按以下方式解决它:
Me.mySubformControl.Form.RecordSource = strDynamicSQL