簡體   English   中英

使用vba在ms Access 2003中進行參數化查詢

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

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