[英]parameterized query in ms access 2003 using vba
好。 我想使用參數化查詢來避免處理數據中嵌入的雙引號或單引號(“或”)。
作為一個簡單的示例,此參數化版本的VBA代碼是什么樣的?
Dim qstr as String
Dim possiblyDangerousString as String
qstr = "SELECT MyTable.LastName from MyTable WHERE MyTable.LastName = '" & possiblyDangerousString & "';"
我沒有從我的代碼中剪切並粘貼此代碼(現在在另一個盒子上),因此可能會有錯字。
一旦找出了這個簡單的示例,就需要繼續執行更復雜的語句(多個參數和聯接)。 謝謝你的建議
在VBA中,您可以使用以下方法:
Dim db As DAO.Database
Dim qdf As QueryDef
Dim strSQL as String
Set db = CurrentDb
strSQL = "PARAMETERS txtLastName Text(150); " _
& "SELECT LastName FROM MyTable " _
& "WHERE LastName=txtLastName"
''Create a temporary query
Set qdf = db.CreateQueryDef("", strSQL)
qdf.Parameters!txtLastName = Trim(possiblyDangerousString)
這個示例用處不大,因為您現在要處理查詢? 請注意,您可以存儲參數查詢並在VBA中分配參數。 還請注意,備注字段成為問題,因為參數只能接受255個字符。
使用“替換”功能的唯一麻煩是,即使您已經用單引號將單引號進行了限定,但只要有“'”就將其替換為“''”:“''變成“'''' “ (等等)。
您可以創建一個過程或函數來檢查“ '[!'] ”字符串,並使用Like替換它們:
公共函數QualifySingleQuote(myStr as string)As String
If myStr Like "*'[!']*" Then
QualifySingleQuote = Replace(myStr, "'", "''")
Else
QualifySingleQuote = myStr
EndIf
結束功能
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.