Как работать с одинарной кавычкой в Word VBA SQL query?

Я получаю имя клиента из раскрывающегося списка и использую это значение для запроса электронной таблицы excel, однако имя может содержать одну цитату (пример: мясо Адама). Это нарушает мое приложение и как сделать запрос с переменной, содержащей одну кавычку?

Private Sub cboCompany_Change()
            Dim customerName As String
            customerName = cboCompany.Value

rsT.Open "SELECT Customer, Postcode, Address1, Address2, State, Country FROM Customers WHERE  Customer = '" & customerName & "'", cn, adOpenStatic

2 ответов


где вы указываете две одинарные кавычки '', один будет избегать другого и приведет к синглу, попробуйте заменить его следующим образом:

customerName = Replace(customerName, "'", "''")

Это оставляет вас широко открытыми для атак путем внедрения кода SQL. Я бы рекомендовал изменить это на параметризованный запрос, подобный этому

Dim cmd as NEW ADODB.Command

With cmd
 .CommandText=”SELECT foo from tblBar where foo=?”
 .Parameters.Append .CreateParameter("@foo", adVarChar, adParamInput, 50, “What ever you want”)
 .ActiveConnection=dbCon
 .CommandType=adCmdText
End With

Set rst=cmd.execute