2013-02-25 143 views
0

我有一些VBA代碼根據查詢內容生成HTML報告。查詢日期通過使用以下標準的框的內容來確定。太少參數。預計1

Forms![frmImport]![Flash] 

當我設置它,它給了我太多的參數錯誤。如果我設置標準說,2013年2月20日,它工作得很好。我假設這與VBA解釋查詢條件的方式有關。

下面是我的代碼,VBA似乎不喜歡的部分。

Dim db As DAO.Database 
Dim QUERY As DAO.Recordset 

Set QUERY = db.OpenRecordset("qryFlash") 

我不確定是否還有更多的東西我必須添加到設置行,以便VBA播放這個查詢很好。

+1

顯示完整的SQL查詢,或者至少是完整的WHERE條件 - 從查詢中引用表單文本框時出現某種錯誤(也許名稱「flash」不是文本框的名稱(((qryMidDay1.Profile)Like「* ABCD」)AND((tblLibrary.Date)= [Forms]![frmImport]![Flash]),或者當您運行查詢時窗體關閉或?) – 2013-02-25 18:22:01

+0

WHERE ); 該文本框的名稱是正確的,我已經打開窗體,每次運行它。 – user1706975 2013-02-25 18:26:14

+0

表單打開時,轉到VBA編輯器,打開直接窗口(如果未打開)並鍵入:? [Forms]![frmImport]![Flash]確保它看起來像一個日期。如果確實如此,那麼確保tblLibrary.Date實際上是鍵入日期時間。 – 2013-02-25 18:35:09

回答

1

嘗試

Dim qdf As DAO.QueryDef 
Dim prm As DAO.Parameter 
Dim rs As DAO.Recordset 

Set qdf = CurrentDb.QueryDefs("qryFlash") 
For Each prm In qdf.Parameters 
    prm.Value = Eval(prm.Name) 
Next prm 
Set rs = qdf.OpenRecordset(dbOpenDynaset) 
+0

這似乎不太有效。我在代碼中使用了許多.RecordCounts和.MoveFirst命令,以便正確構建報告,並且它們似乎不適合使用此設置。 – user1706975 2013-02-25 18:58:47

+1

你沒有提到問題所在。請儘可能多地提供有關您的工作方式不符合您要求的信息。請注意,您始終可以構建SQL字符串,而不是從存儲查詢中打開記錄集,在這種情況下,您不會遇到參數問題。此外,如果結果集有點小,並且您不需要更新,dbOpenSnapshot會更好。 – 2013-02-25 20:45:34

+0

這就是我最終做的。感謝您的幫助! – user1706975 2013-02-25 21:13:10

0

端起來簡單構建SQL字符串,而不是使用查詢。解決了我的問題。

相關問題