MS Access - 在VBA中按名称执行已保存的查询

MS Access - 在VBA中按名称执行已保存的查询

问题描述:

如何在VBA中的MS Access 2007中执行保存的查询?MS Access - 在VBA中按名称执行已保存的查询

我不想将SQL复制并粘贴到VBA中。我宁愿只执行查询的名称。

这不起作用... VBA找不到查询。

CurrentDb.Execute queryname 

你可以做到这一点的方式如下:

DoCmd.OpenQuery "yourQueryName", acViewNormal, acEdit 

OR

CurrentDb.OpenRecordset("yourQueryName") 
+1

我不想编辑。这会执行我的更新并插入查询吗? – tdjfdjdj 2012-03-29 15:57:00

+0

是的,它会运行更新和插入查询。 – Taryn 2012-03-29 15:58:32

+0

它是一个附加查询手动工作,但不是在我的vba代码。我可以不使用追加保存的查询吗? – tdjfdjdj 2012-03-29 17:09:11

你最好调查一下VBA找不到queryname

我有一个保存的查询名为qryAddLoginfoRow。它将当前时间的一行插入到我的loginfo表中。当由CurrentDb.Execute按名称调用时,该查询成功运行。

CurrentDb.Execute "qryAddLoginfoRow" 

我的猜测是,要么queryname是一个变量保存查询不当前数据库的QueryDefs集合中存在,或者queryname的名字是现有查询的文字名称,但你没有用引号括起来。

编辑: 你需要找到一种方法来接受queryname不会将当前数据库的QueryDefs集合中存在。将这两行添加到CurrentDb.Execute行之前的VBA代码中。

Debug.Print "queryname = '" & queryname & "'" 
Debug.Print CurrentDb.QueryDefs(queryname).Name 

那些2线将触发运行时错误3265的第二个“这个项目集合中找不到。”然后转到立即窗口来验证你问CurrentDb查询的名称到Execute

+0

它是一个附加查询手动工作,但不是在我的vba代码。我可以不使用追加保存的查询吗? – tdjfdjdj 2012-03-29 17:09:00

+0

我描述的**查询是**附加查询...它将一行添加到我的loginfo表中。 – HansUp 2012-03-29 17:13:23

要使用CurrentDb.Execute,您的查询必须是操作查询,并用引号引起来。

CurrentDb.Execute "queryname"