Строковая переменная в сочетании с использованием символов подстановки в запросе SQL через VBA - PullRequest
0 голосов
/ 11 апреля 2019

Я хотел бы запустить SQL query в VBA.table имя t.Я помещаю символы подстановки, чтобы найти любые подходящие записи.Тем не менее, я получаю type mismatch error.

Я попробовал следующее:

Dim j as string
Dim SQL1 as string

j = "ED"

SQL1 = "SELECT t.ID, t.Name " _
       &"FROM t " _
       & WHERE (((t.Name) Like " * " & '" & j & "' & " * ")); "

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

Ответы [ 2 ]

2 голосов
/ 12 апреля 2019

Если бы вы просматривали свой исходный код в любом редакторе кода, снабженном подсветкой синтаксиса VBA, вы скоро обнаружите дисбаланс в одинарных и двойных кавычках в конкатенации строк - это можно продемонстрировать даже с помощью подсветки синтаксиса на этом сайт:

SQL1 = "SELECT t.ID, t.Name " _
   &"FROM t " _
   & WHERE (((t.Name) Like " * " & '" & j & "' & " * ")); "

Обратите внимание, что WHERE (((t.Name) Like не отображается в виде строки, так как в этой строке отсутствует открывающая двойная кавычка, а все, что следует за первой одинарной кавычкой, рассматривается как комментарий.

Поскольку только переменные данные требуют объединения, определение переменной SQL1 может быть значительно упрощено до следующего:

SQL1 = "SELECT t.ID, t.Name FROM t WHERE t.Name Like '*" & j & "*'"

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

SQL1 = "SELECT t.ID, t.Name FROM t WHERE t.Name Like ""*" & j & "*"""
0 голосов
/ 11 апреля 2019

попробуйте это: (положение звездочек и апострофов важно!)

SQL1 = "SELECT t.ID, t.Name " _
& "FROM t " _
& "WHERE t.Name Like '*" & j & "*'"
...