簡體   English   中英

VBA 代碼中 WHERE 關鍵字的正確語法語法是什么

[英]What is the correct syntax Syntax for WHERE keyword in VBA Code

我正在構建一個字符串,它將在我的訪問數據庫中執行 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 子句和之后的字符串連接導致了它。 我的主要問題是這個問題是否是語法問題,我只需要在某處轉義或添加雙引號,還是語句的邏輯問題,以及我正在嘗試做的事情:這是 select 來自條件,更改記錄的 ID 與數據庫中的 ID 匹配? 歡迎任何注釋或評論,並感謝您的時間。

如果您使用的是 SQL 服務器,您將需要類似

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

對於其他 RDBMS(可能是 JetDB = Access),您需要引號而不是方括號。 (引號實際上也適用於 SQL 服務器,我通常只使用方括號。)

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

...對於區分大小寫的 RDBMS(如 Oracle),請引用所有內容(無論如何都不會受到傷害)...

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM