【问题标题】:querydefs run-time error 3265: item not found in this collectionquerydefs 运行时错误 3265:在此集合中找不到项目
【发布时间】: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报错是完全正确的!请参阅我的答案以了解如何操作

标签: ms-access vba dao


【解决方案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构建它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多