vba - 在 Access 中传递参数以使用 VBA 进行查询并获取“”
问题描述
似乎我不能像通常那样在 VBA 中构建查询。
我有一个表单,用户可以从列表等中选择参数。他们单击“提交”按钮,该按钮应过滤表,以便他们可以仅对这些记录进行更改。该表嵌入在表单底部的相同表单中。在他们设置参数并提交之前,它是空白的。
因为它是表单中的一个表,并且是一个子表单/子报表,所以从我读到的唯一方法来填充它是使用预构建的 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)
没有值,因为某种原因,但它确实是因为 I can Debug.Print(coProj(1))
,所以它与声明有关。
有什么建议么?
解决方案
将参数设置为 querydef 对作为表单记录源的 SELECT 查询没有好处。它只对打开记录集有用。
qdf.Execute
仅对操作查询(INSERT、UPDATE、DELETE)有效。
但这没关系 - 如果您想动态填写子表单,只需像这样处理它:
Me.mySubformControl.Form.RecordSource = strDynamicSQL
推荐阅读
- monitoring - 如何从 OpenStack 中的 Windows Server 2012 R2 获取内存使用情况
- java - 失败后 Windows 任务计划程序不会重新启动 java 应用程序
- hyperledger-fabric - Hyperledger Fabric 1.4.2 - 第一个网络 - 获取背书客户端时出错 - 缺少链
- http - Flutter:在 null 上调用了 getter“主机”
- html - ionic 3中使用grid和flex的布局
- python - plt.hist 最大 bin 索引与绘图不同
- c# - 未调用非静态天蓝色函数
- java - java - 如何使用restful jersey实现从Java中现有的Web服务类调用另一个类
- php - 有没有办法在许多页面 php 中显示徽标?
- ios - iOS App 如何提交 Google OAuth 验证以使用 Google 日历