vba代码中where关键字的正确语法是什么

tvmytwxo  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(380)

我正在构建一个字符串,它将在我的access数据库中执行sql。为了正确引用源代码,我使用allenbrownaudit的一个指南作为模板来保存对主数据库的更改。
以下是当前给我带来麻烦的代码:

' 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子句和后面的字符串连接导致了它。我的主要问题是,这个问题是语法问题,我只需要转义或在某处添加双引号,还是语句的逻辑问题,以及我试图做的:从条件中选择一个记录,其中更改的记录的id与db中的id匹配?欢迎留言或评论,谢谢您的时间。

wgmfuz8q

wgmfuz8q1#

如果您使用的是sql server,您将需要

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

对于其他RDBMS(可能对于jetdb=access),您需要引号而不是方括号(引号实际上也适用于sql server,我通常只使用方括号。)

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

…对于区分大小写的RDBMS(如oracle),请引用所有内容(无论如何都不会造成伤害)。。。

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

相关问题