因此,數據庫hotchpotch。通過VBA在Access前端執行MySQL存儲過程
- 我有一個存儲過程的MySQL數據庫。
- 我有一個連接到MySQL數據庫(我可以調查表)的Access文件作爲前端(與形式和東西)
- 我已經成功創建了一個ODBC通過查詢(我認爲這就是他們是什麼調用)從數據庫調用其中一個存儲過程。在訪問查詢實際上只是
CALL myProcName;
,給我我希望當我Set Result = CurrentDb.OpenRecordset("myProcName")
把它從VBA的結果是什麼,我想實現如下:
- 已經在存儲過程需要一個參數的MySQL =>檢查!
- 讓該存儲過程按預期工作=>在phpMyAdmin中檢查=>檢查!
- 在Access中保存了一個查詢,該查詢鏈接到此參數存儲過程並給定固定參數值=>檢查! (
CALL myProcName('myParameterValue')
,我可以調用從VBA,就像我做的unparametric查詢) - 必須指定
'myParameterValue'
每次我執行能力的查詢=>不檢查
我需要以某種方式指定的參數在保存的查詢的SQL定義中添加佔位符,並在VBA中設置該參數。對於VBA部分我有和想法,我會發現相當優雅:
Private Sub ParametricQuery()
Dim QDef As QueryDef
Set QDef = CurrentDb.QueryDefs("myProcName")
QDef.Parameters(*insert parameter name here*) = parameter value
Dim Result As Recordset
Set Result = QDef.OpenRecordset
Do While Not Result.EOF
MsgBox Result.Fields(1) 'Display a field from the results
Loop
End Sub
但我將如何建立我的SQL定義?
PARAMETERS in_param TEXT;
CALL myProcName(in_param);
不起作用。如果我嘗試
Set QDef = CurrentDb.QueryDefs("myProcName")
MsgBox QDef.Parameters.Count
我得到一個消息框,告訴我有一個總的在我的查詢定義0參數是,這樣是行不通的。
我在網上找到的是很多人通過字符串操作在VBA中構建實際的SQL。這讓我不寒而慄,原因很多(安全性,可維護性和優雅性)。我堅信有一種更好的方式,希望能夠按照我上面所描述的方式。唯一的問題是:如何做到這一點?
你能後的'在MySQL中建立PROCEDURE'線(無需整個PROC)?命名的參數及其類型非常重要。 – Parfait
嗯,我通過myphpadmin中相當不錯的「創建過程」界面創建了程序。它有一個參數方向「IN」(很明顯),類型爲VARCHAR,長度爲254(電子郵件地址的最大長度)。並且該過程做了一個簡單的'SELECT * FROM table WHERE field = param' – lhiapgpeonk