[英]MS Access parameterized passthrough query
我在獲取帶有參數的查詢以在要構建的MS Access DB中工作時遇到了一個小問題。 參數為數字形式時,我無法正確設置格式/語法。
這是代碼:
Private Sub Command15_Click()
Dim conn As ADODB.Connection
Dim strConnection As String
strConnection = "Driver={Microsoft ODBC for Oracle};Server=SERVER;Uid=USER_ID;Pwd=PASSWORD;"
Set conn = New ADODB.Connection
conn.Open strConnection
conn.Execute " UPDATE L2000.DEPARTURE_STATUS DS " & _
" SET DS.DEPARTURE_STATUS = '" & Forms!frmDepartureStatus.txtdeparturestatus & "' " & _
" WHERE DS.DEPARTURE_NO = " & Forms!frmDepartureStatus.txtdepno
conn.Close
Set conn = Nothing
End Sub
通過參數從txtdepno發送的值是一個數字,我嘗試了幾種不走運的方法。
這是另一個類似的代碼,但是這次參數是一個字符串:
Private Sub Command16_Click()
Dim conn As ADODB.Connection
Dim strConnection As String
strConnection = "Driver={Microsoft ODBC for Oracle};Server=SERVER;Uid=USER_ID;Pwd=PASSWORD;"
Set conn = New ADODB.Connection
conn.Open strConnection
conn.Execute " UPDATE L2000.USERS U " & _
" SET U.STORER_ID = '" & Forms!EXAMPLE.txtInput2 & "'" & _
" WHERE U.USER_ID = '" & Forms!EXAMPLE.txtInput & "'"
conn.Close
Set conn = Nothing
End Sub
字符串串聯不是參數化。 但是,如果您使用字符串連接,則可以很輕松地解決此問題。 只需省略單引號,這樣Oracle會將其視為數字。 用單引號將它們視為字符串:
Private Sub Command16_Click()
Dim conn As ADODB.Connection
Dim strConnection As String
strConnection = "Driver={Microsoft ODBC for Oracle};Server=SERVER;Uid=USER_ID;Pwd=PASSWORD;"
Set conn = New ADODB.Connection
conn.Open strConnection
conn.Execute " UPDATE L2000.USERS U " & _
" SET U.STORER_ID = " & Forms!EXAMPLE.txtInput2 & _
" WHERE U.USER_ID = " & Forms!EXAMPLE.txtInput
conn.Close
Set conn = Nothing
End Sub
如果您確實想構建一個參數化查詢,它將看起來像這樣:
Private Sub Command16_Click()
Dim conn As ADODB.Connection
Dim strConnection As String
strConnection = "Driver={Microsoft ODBC for Oracle};Server=SERVER;Uid=USER_ID;Pwd=PASSWORD;"
Set conn = New ADODB.Connection
conn.Open strConnection
Dim cmd As New ADODB.Command
Set cmd.ActiveConnection = conn
cmd.CommandText = "UPDATE L2000.USERS U " & _
" SET U.STORER_ID = ?"
" WHERE U.USER_ID = ?"
cmd.Parameters.Append cmd.CreateParameter(, adInteger,adParamInput, 5, Forms!EXAMPLE.txtInput2 )
cmd.Parameters.Append cmd.CreateParameter(, adInteger,adParamInput, 5, Forms!EXAMPLE.txtInput )
cmd.Execute
conn.Close
Set conn = Nothing
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.