簡體   English   中英

MS Access參數化直通查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM