Intereting Posts
Почему мой SQL-запрос не вставляет строку таблицы правильно? Я не могу войти в систему с пользователем, созданным в sql azure Как получать записи в grails по максимальной дате и группе одновременно В DB2 for i, Search for Column, возвратите имена таблиц в виде списка Использует ли параметризованный SqlCommand мою программу невосприимчив к SQL-инъекции? MySQL Присоединиться к нескольким условиям Имя псевдонима динамического столбца Как получить возвращаемое значение хранимой процедуры DbDataReader, NextResult () и заполнение более одной таблицы Не удается присоединиться к Memo, OLE или объекту гиперссылки – Access 2007 – внешние соединения подсчет значений mysql Разработка базы данных для отношений «многие ко многим» с ограничениями SQL Scripts – существует ли эквивалент #define? опционально, где представлены сообщения о яшме предложения SQL: выберите все уникальные значения в таблице A, которые не указаны в таблице B

параметризованный запрос в MS Access 2003 с использованием 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. Также обратите внимание, что поля memo становятся проблемой, поскольку параметр может принимать только 255 символов.

Единственная проблема с использованием функции «Заменить» заключается в том, что везде, где есть «», она заменяется на «», даже если вы уже квалифицировали одиночную цитату с другой отдельной цитатой после нее: «'» »становится«' '' '' " (и так далее).

Вы можете создать процедуру или функцию, чтобы проверить строки «[!»] И заменить те, которые используются с помощью:

Открытая функция QualifySingleQuote (myStr as string) As String

 If myStr Like "*'[!']*" Then QualifySingleQuote = Replace(myStr, "'", "''") Else QualifySingleQuote = myStr EndIf 

Конечная функция