querydefs 运行时错误 3265:在此集合中找不到项目

Posted

技术标签:

【中文标题】querydefs 运行时错误 3265:在此集合中找不到项目【英文标题】:querydefs run-time error 3265: item not found in this collection 【发布时间】:2015-10-26 10:20:48 【问题描述】:

在 Access 2007 中,我尝试发送查询结果,但是,我不断收到错误消息“运行时错误 '3265':在此集合中找不到项目。”错误即将上线:

Set qry = CurrentDb.QueryDefs(ReportQueryName)

我检查了字段的拼写,并尝试弄乱工具>参考以确保我拥有正确的库。

这是我当前的代码:

Private Sub Command202_Click()

Dim qry As DAO.QueryDef
Dim strSQL As String
Dim ReportQueryName As String

ReportQueryName = "ReportEmail"

Set qry = CurrentDb.QueryDefs(ReportQueryName)
strSQL = "SELECT [ID], [title] FROM Cases WHERE ID = " & Me.ID
qry.SQL = strSQL

DoCmd.SendObject acSendQuery, "ReportEmail", acFormatXLSX, "email@address.com", ..., , False

End Sub

【问题讨论】:

在您运行此过程之前查询是否存在,或者您是否正在尝试创建它? 此代码运行前查询不存在。 这样的话QueryDefs报错是完全正确的!请参阅我的答案以了解如何操作 【参考方案1】:

您不能使用 QueryDefs 创建新查询 - 您必须改用 CreateQueryDef

Private Sub Command202_Click()

    Dim qry As DAO.QueryDef
    Dim strSQL As String
    Dim ReportQueryName As String

    ReportQueryName = "ReportEmail"

    strSQL = "SELECT [ID], [title] FROM Cases WHERE ID = " & Me.ID

    Set qry = CurrentDb.CreateQueryDef(ReportQueryName,strSQL)

    DoCmd.SendObject acSendQuery, "ReportEmail", acFormatXLSX, _
    "email@address.com", ..., , False

End Sub

有时您的新查询不会立即显示在 Access 窗口中。

如果你愿意,你可以使用:

Application.RefreshDatabaseWindow

【讨论】:

它说我不能给它投票,因为我还没有足够的信誉。我会尽量记住当我回来的时候。 别担心,很高兴我能帮上忙! @MarkButler 你设置了qry 并且不要使用它。 我收到错误 3075,查询“field=value”中缺少运算符(语法错误)。我有一个字符串值。引用没有帮助。 我已经很久没有精通VBA了,但是“Set...”行创建了新查询,将其命名为“ReportEmail”并使用strSQL构建它。

以上是关于querydefs 运行时错误 3265:在此集合中找不到项目的主要内容,如果未能解决你的问题,请参考以下文章

VBA - 使用 DAO 对象的运行时错误 3271

PHP中错误处理集合

hdu3265一种错误的做法

在此代码中获取运行时错误退出代码 1,它提供正确的输出并且在内存和时间限制内

Access SQL:从插入语句或从 DAO.QueryDef 获取受影响记录的标识值

将 DAO QueryDef 保存到临时查询并将结果输出到 Excel