0
我有一個關於在Access VBA中運行SQL的問題。我想基本上在vba中創建一個查詢,但沒有它是我的數據庫中的查詢。它只是坐在那裏,不可見,直到使用它的操作完成,然後它纔會消失。訪問VBA在SQL中創建另一個SQL查詢使用的臨時查詢
我的代碼如下(簡化以關注此問題)。我不認爲我這樣做是對的,因爲我認爲在第二個查詢中我需要做" & ECStart2SQL & "
的事情,但我不知道當我需要引用一個值時它是如何工作的。
Private Sub TimeReportingButton_Click()
'THIS IS THE 1ST QUERY
Dim ECStart2SQL As String
ECStart2SQL = "SELECT D1.[#], (SELECT Count(*) FROM tbl_Data D2 WHERE D2.[#] = D1.[#] AND D2.[tsUpdated] <= D1.[tsUpdated]) AS Sequence, D1.tsUpdated FROM tbl_Data AS D1 WHERE ((((SELECT Count(*) FROM tbl_Data D2 WHERE D2.[#] = D1.[#] AND D2.[tsUpdated] <= D1.[tsUpdated]))=1)) ORDER BY D1.[#]"
'THIS IS THE 2ND QUERY, THE UPDATE QUERY, THAT REFERS TO THE FIRST ONE
Dim UpdECStartRank2SQL As String
UpdECStartRank2SQL = "UPDATE tbl_TimeReporting INNER JOIN ECStart2SQL ON tbl_TimeReporting.[#] = ECStart2SQL.[#] SET tbl_TimeReporting.ECStart = [ECStart2SQL]![tsUpdated] WHERE (((tbl_TimeReporting.ECStart) Is Null) AND ((tbl_TimeReporting.Sequence)=2))"
'OPERATION
DoCmd.SetWarnings False
DoCmd.RunSQL UpdECStartRank2SQL
MsgBox "Done!", , "Done!"
DoCmd.SetWarnings True
End Sub
請,如果你能提供任何幫助,我會很感激。謝謝!!
要添加Marek,因爲他正在運行動作查詢,所以不需要DAO.Recordset。 OP的文章中的原始更新SQL將起作用。 – Parfait 2015-01-31 23:01:54
當然,我只是以此爲例。但我想我應該改變它,所以它不會造成任何混淆 – 2015-01-31 23:06:59
這是非常好的,我的代碼現在工作,我期待着更多地瞭解這一點。非常感謝!! – msim 2015-02-01 00:12:27