我有以下用于在 Microsoft Access 中添加記錄的 SQL 陳述句。當我運行該陳述句時,每個欄位都被正確添加,除了布爾欄位,它應該始終為假。但是,它總是添加具有默認布林值 (true) 的記錄。
Dim strSQL As String
strSQL = "INSERT INTO Part VALUES ('" & Me.IdPartPrimary.Value & "', '" & Me.NamePartPrimary.Value & "', '" & Me.BrandPartPrimary.Value & "', '" & Me.ModelPartPrimary.Value & "', '" & Me.FunctionPartPrimary.Value & "', 0, '" & Me.FatherPartPrimary.Value & "', '" & Me.ProviderPartPrimary.Value & "', '" & Me.AmountPartPrimary.Value & "');"
DoCmd.RunSQL strSQL
我嘗試過的事情:
- 將 0 放在 ' ' 之間
- 用單詞 false、False 和 No 替換 0
我不能將 false 設定為默認值,因為我需要的是它與默認值不同


uj5u.com熱心網友回復:
將表單系結到表并運行 SQL 以在同一個表中創建記錄將產生兩條新記錄。做一個或另一個。
不要在 INSERT 操作中包含自動編號欄位。必須明確列出要接收資料的欄位。
如果您希望新記錄在 Yes/No 欄位中始終具有 0 值,則在表設計中將其設定為 DefaultValue,否則在 SQL 連接中使用常量來指定。
strSQL = "INSERT INTO Part(..., Primary_Part, ...) VALUES(" & ... & ", 0, " & ... & ")"
AFAIK,Access 無法執行多動作 SQL 陳述句,但 SQL 注入仍然是可能的。如果您想探索 VBA 中引數的使用,請查看如何在 Microsoft Access 的不同背景關系中使用 VBA 中的引數?
另一種避免 SQL 注入的方法是打開一個記錄集,使用它的 AddNew 方法創建一個新記錄,并設定每個欄位的值。DAO.Recordset AddNew
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/505129.html
