因此,我有一個相對簡單的查詢,它具有兩個參數,其中一個參數從表單中拉出一個長整型並從一個表中選擇只有一個字段具有該值的記錄。 (這是一個設計項目表,用戶正在選擇一個設計師,其項目應該列出)。Access 2003 VBA:查詢在直接運行時有效,但從代碼運行時運行時錯誤3061?
如果我打開表單,然後手動打開查詢,它的工作原理完美。如果我有第二種形式(用查詢結果填充列表框)嘗試設置記錄集等於查詢結果,它會失敗,並顯示「運行時錯誤'3061'。參數太少。
如果我將參數設置爲靜態整數,例如3,它工作正常(但顯然是無用的)。爲什麼我的VBA代碼無法從窗體上的文本字段中讀取文本,當Access本身顯然可以?
這裏是我的查詢:
SELECT [Project Request Log TABLE].Designer1, [Project Request Log TABLE].Priority, [Project Request Log TABLE].ProjectName, [Project Request Log TABLE].Manager, [Project Request Log TABLE].SME1, [Project Request Log TABLE].Priority, [Project Request Log TABLE].ProjectID
FROM Designers INNER JOIN [Project Request Log TABLE] ON Designers.ID = [Project Request Log TABLE].Designer1
WHERE ((([Project Request Log TABLE].Designer1)=[Forms]![frm_selectDesigner]![txtDesignerId]) AND (([Project Request Log TABLE].PercentComplete)<>1))
ORDER BY [Project Request Log TABLE].Designer1, [Project Request Log TABLE].Priority;
這裏是VBA的給出錯誤的行:
Set rst_projects = dbs.OpenRecordset("qryDesignerProjectPrioritySet", dbOpenDynaset)
感謝。
編輯:選擇設計者的窗體打開第二個窗體,上面的代碼試圖打開一個記錄集。原始的frm_selectDesigner沒有關閉,當點擊OK時隱藏,但保持打開狀態。
編輯2:如果我有行
DoCmd.OpenQuery "qryDesignerProjectPrioritySet"
查詢打開,並有正確的結果。如果下一行嘗試將該查詢的結果分配爲上述的記錄集,則會出現3601錯誤?在編寫OpenRecordset命令時必然會出現某種錯誤,對吧?
只是爲了澄清:當您嘗試從其他窗體運行查詢時,'frm_selectDesigner'窗體*被打開,對吧? – 2013-04-26 15:37:09
*爲什麼我的VBA代碼無法從窗體上的文本字段讀取文本,當Access本身明顯可以?*可能因爲VBA在Access以外的環境中使用。 – 2013-04-26 15:50:15
[Project Request Log TABLE] .PercentComplete <> 1 – CarlF 2013-04-26 16:34:13