Передача параметров SQL, содержащих пробелы или дефисы - PullRequest
0 голосов
/ 07 июня 2019

А) Я собираю данные из устаревших приложений; элементы данных содержат пробелы и дефисы (CBR-CR-22-2) или (CBR-CR-22-2)

B) В VBA при создании функции и передаче параметров SQL с этими элементами данных код генерирует ошибки (много!)

C) Я сузился, чтобы определить, что ВСЕ ошибки были вызваны форматом элементов данных

D) Элемент данных, вызывающий проблему, является ПЕРВИЧНЫМ КЛЮЧОМ в примерно 30 таблицах и создается устаревшими приложениями

(см. Код) Я попробовал синтаксис:

A) strDataElm

B) [strDataElm]

С) & """ & strDataElm & """

strSourceSql = "SELECT " & strSourceFld & " FROM " & strSourceTbl & " WHERE " & strSourceFld & " = " & strDataElm

в ближайшем окне это дает

    SELECT NumeroCtl FROM tblLnkCtrl WHERE RISKID = CBR - CR - 22 - 2

В идеальном мире я бы хотел, чтобы strDataElm передавался как есть, т.е. CBR - CR - 22 2 или без пробелов CBR-CR-22-2; удаление дефисов может вызвать проблемы, поскольку данные являются первичным ключом и используются повторно в других приложениях.

1 Ответ

2 голосов
/ 07 июня 2019

Как уже упоминалось, лучше использовать параметризованные запросы, но я знаю - способ объединения строк слишком приятен.

Попробуйте это:

strSourceSql = "SELECT " & strSourceFld & " FROM " & strSourceTbl & " WHERE [" & strSourceFld & "] = [" & strDataElm & "]"

если вы передадите ссылку на поле

И это, если вы передадите само значение

strSourceSql = "SELECT " & strSourceFld & " FROM " & strSourceTbl & " WHERE " & strSourceFld & " = " & "'" &  strDataElm & "'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...