2012-03-29 77 views

回答

32

你可以做到這一點的方式如下:

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

7

你最好調查一下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

2

要使用CurrentDb.Execute,您的查詢必須是操作查詢,並用引號引起來。

CurrentDb.Execute "queryname"