Каков правильный синтаксис для ключевого слова WHERE в коде VBA - PullRequest
0 голосов
/ 05 августа 2020

Я создаю строку, которая будет выполняться sql в моей базе данных доступа. для правильного цитирования источника я использую руководство Allen Brown Audit в качестве шаблона для сохранения изменений в моей основной базе данных.

вот код, который в настоящее время вызывает у меня проблемы:

' If this was not a new record, save the old values.
If Not bWasNewRecord Then
    sSQL = "INSERT INTO " & sAudTmpTable & " ( audType, audDate, audUser, ID, Campus, Building, Room, `Device Type`, Model, Domain, `Serial Tag`, Barcode, HostName, `Custodian Name`, Notes ) " & _
        "SELECT 'EditFrom' AS Expr1, Now() AS Expr2, NetworkUserName() AS Expr3, " & sTable & "ID, Campus, Building, Room, `Device Type`, Model, Domain, `Serial Tag`, Barcode, Hostname, `Custodian Name`, Notes " & _
        "FROM " & sTable & " WHERE " & sTable & "." & sKeyField & " = " & lngKeyValue & ";"
    db.Execute sSQL, dbFailOnError
End If

в настоящее время он возвращает ошибку «Слишком мало параметров. Ожидается 1.», что заставляет меня думать, что это предложение WHERE и конкатенация строк после этого. Мой главный вопрос заключается в том, является ли эта проблема синтаксической проблемой, когда мне просто нужно было уйти или добавить где-то двойные кавычки, или проблема logi c с оператором, и что я пытаюсь сделать: это выбрать запись из критерия, где идентификатор измененной записи совпадает с идентификатором в БД? любые примечания или комментарии приветствуются, и спасибо за ваше время.

1 Ответ

0 голосов
/ 05 августа 2020

Если вы используете SQL Server, вам понадобится что-то вроде

SELECT Room
, [Device Type]
, Model
, Domain
, [Serial Tag]

Для других СУБД (возможно, для JetDB = Access) вам понадобятся кавычки вместо квадратных скобок. (Котировки могут работать и для сервера SQL, я обычно использую квадратные скобки.)

SELECT Room
, "Device Type"
, Model
, Domain
, "Serial Tag"

... и для СУБД, которые чувствительны к регистру (например, Oracle), цитируйте все ( что все равно не повредит) ...

SELECT "Room"
, "Device Type"
, "Model"
, "Domain"
, "Serial Tag"
...