gpt4 book ai didi

ms-access - VBA OpenRecordset 产生错误 3061

转载 作者:行者123 更新时间:2023-12-03 04:52:11 25 4
gpt4 key购买 nike

databasename = "qryDataExport"
Dim grpfield As String
grpfield = "Group"

Dim keys As DAO.Recordset
groupcmd = "SELECT [" & databasename & "].[" & grpfield & "] FROM [" & databasename & "] GROUP BY [" & databasename & "].[" & grpfield & "]"
Set keys = CurrentDb.OpenRecordset(groupcmd, dbOpenSnapshot)

上面的结果是“错误 3061:参数太少。预期为 13。”运行时。到目前为止,我的阅读强烈暗示这可能是字段标题不正确的拼写问题或由定义 groupcmd 的行中的不正确引用引起的问题。

我尝试了以下数据库名称格式:

CurrentDb.Queries.qryDataExport
CurrentDb!Queries!qryDataExport

还有上面的“qryDataExport”。后两者不提供错误消息,而第一个则无法编译。我已确认主表和 qryDataExport 中都有一个标题为“组”的列。

正在使用的模块来自this Google Code page .

(编辑:截至目前完整编辑的模块:http://pastebin.com/TJip86ED)

据我所知,我预计这是数据库名称定义中一个非常明显的格式错误,但我没有足够的 VBA 经验来发现它,而且我已经没有想法了。任何建议将不胜感激。

EDIT2:generateKML() 的内容现在位于 ExportToKMLButton_Click() 中,其中 ExportToKMLButton 是表单 上的按钮DW_Form。当 DW_Form 打开时,查询 qryDataExport 可用,但当表单关闭时,查询会提示输入错误消息中提到的 13 个参数。

最佳答案

听起来您的qryDataExport查询引用了Access表单上的控件,也许类似于这个......

SELECT *
FROM YourTable
WHERE some_field = Forms!Form1!YourTextBox

如果 Form1 打开(在表单 View 中),我可以从 Access 的查询设计器运行该查询,它将解析对表单控件的引用。

但是,如果我尝试对 OpenRecordset 使用完全相同的查询,则不会解析引用,并且在这种情况下,Access 会将其解释为我未为其提供值的参数.

对于具有多个控件引用的查询,您可以根据 SELECT 语句创建临时 QueryDef,并循环 Access 其 Parameters 集合,使用参数的 .NameEval() 提供每个参数值,最后调用 QueryDef.OpenRecordset 方法来加载记录集:

Dim prm As DAO.Parameter
Dim qdf As DAO.QueryDef
Set qdf = CurrentDb.CreateQueryDef(vbNullString, groupcmd)
For Each prm In qdf.Parameters
prm.Value = Eval(prm.Name)
Next
Set keys = qdf.OpenRecordset

关于ms-access - VBA OpenRecordset 产生错误 3061,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30378074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com