【问题标题】:SQL Statement to grab data from entry form to Data table in Microsoft Access 2010 VBASQL 语句在 Microsoft Access 2010 VBA 中将数据从条目表单抓取到数据表
【发布时间】:2019-12-12 23:08:25
【问题描述】:

所以我在 MS Access 2010 中设置了一个数据库(第一次这样做)。我似乎无法正确理解 SQL 语句的语法。我想将我输入的数据输入数据输入表单,并将新行插入到表中,其中包含该数据。所有这些都在 VBA 编辑器中使用 SQL(只有我可用的代码,所有其他代码都被阻止)

Private Sub Add_Click()
    Dim sSQL As String

    sSQL = "INSERT INTO Data (Type, Name, Quantity, Amount, Class, Series, Client, Date1, Date2) VALUES " & _
            "('" & Me!txtType & "','" & Me!txtName & "'," & Me!txtQuantity & "," & Me!txtAmount & ",'" & Me!txtClass & "','" & Me!txtSeries & "','" & Me!txtClient & "'," & Me!date1 & "," & Me!date2 & ")"
    Debug.Print sSQL

    CurrentDb.Execute sSQL
End Sub

所以当我从 VBA 编辑器运行代码时出现以下错误:

“运行时错误‘3134’:

INSERT INTO 语句中的语法错误。"

并且 SQL 语句的打印输出看起来是正确的:

INSERT INTO Data (Type, Name, Quantity, Amount, Class, Series, Client, Date1, Date2)
    VALUES ('Purhcase', 'TV', 500, 100, '', '', ' Bob', 05.08.2019, 05.08.2019)

【问题讨论】:

  • 您需要将日期05.08.2019 括起来,并用引号将'05.08.2019' 视为符合ISO 标准的'2019-08-05'
  • 我也试过加引号,但我仍然得到同样的错误。当我加上引号时,我什至将数据列的格式设置为文本,但仍然出现错误。由于日期来自表单,因此格式必须是定义的格式之一,所以我选择了 Short Date
  • 顺便说一句,不要使用串联来替换您的参数,而是更喜欢使用占位符,尤其是针对 SQL 注入。
  • 你能举个例子吗,不知道你的意思。我猜你的意思是为 '" & Me!txtType & "' 创建占位符?
  • 您可以在插入语句中尝试CONVERT(date,'05.08.2019',104) 而不是直接05.08.2019。因为正如你提到的,输入格式是固定的。

标签: sql forms ms-access-2010


【解决方案1】:

找到答案:

原来我的数据字段的名称之一是保留字,因此我只是将它们全部放入 [] 并解决了问题。

还是谢谢大家的帮助!

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
  • 2014-07-04
  • 1970-01-01
  • 2017-10-23
  • 1970-01-01
相关资源
最近更新 更多