2011-10-07 69 views
0

我有一個SQL查詢,該查詢佔用存儲在數據庫中的參數。我想從同一個數據庫上運行的VBA代碼調用相同的代碼。我正在使用MS Access進行工作。我想要從我的VBA代碼'C'中調用這個SQL查詢,這當然也涉及到傳遞這個參數'p',這個SQL查詢'Q'需要一個參數'p'到查詢。通過VBA代碼在數據庫中調用SQL過程

幫助非常感謝 Soham

+0

你如何連接到數據庫? ODBC?你有什麼嘗試?其DAO數據庫爲 – StevieG

+0

。我只是在VBA代碼裏面使用硬編碼SQL查詢 – Soham

回答

2

這裏有幾種可能性。

讓我們說,這是一個建立包含要使用的參數和輸入是安全的窗體上的SELECT查詢:

s = "SELECT * FROM MyTable WHERE AText ='" & Me.MyText & "'" 

這可以用於像這樣:

Forms!SomeForm.RecordSource = s 

Set qdf = CurrentDb.CreateQueryDef("NewQuery", s) 

但是,上述可以以其他更好的方式完成。

讓我們說這是一個動作查詢從包含要使用的參數和輸入是安全的形式運行:

s = "UPDATE MyTable Set AText ='" & Me.MyText & "'" 

然後

Set db = CurrentDB 
db.Execute s, dbFailOnError 

或者你可以使用一個臨時查詢,可以更安全:

'Temporary query 
s = "UPDATE MyTable Set AText = MyRext" 

Set qdf = db.CreateQueryDef("", s) 

qdf.Parameters!MyText = Me.MyText 
qdf.ReturnsRecords = False 
qdf.Execute dbFailOnError 

與上述類似的東西也適用於現有查詢。

您也可以將參數傳遞給過程,在這種情況下,Me.MyText變成變量,或者您可以使用Inputbox,這很少是一個好主意。

之後,就有了ADO的整個世界。

+0

非常感謝。我正在使用VBA代碼中的硬編碼查詢。我會嘗試將這些方法中的一部分結合起來。非常感謝 – Soham