【问题标题】:Creating data entry form using button VBA使用按钮 VBA 创建数据输入表单
【发布时间】:2018-03-28 15:10:51
【问题描述】:

我正在尝试创建一个基本的数据输入表单,但是,它变得比我预期的要麻烦。我已经创建了表单,现在我只是想将数据插入数据库(测试)。我收到“需要对象”错误。有什么建议么?所有的 txt 框都经过验证是正确的。这一切都是通过 Access VBA 完成的

Private Sub Command28_Click()



Dim sSQL As String

Set sSQL = "INSERT INTO TEST (Carrier_Ent_ID, Row_Insert_TS, Row_Update_TS, 
            Row_Insert_User_ID, Row_Update_User_ID, Carrier_Ent_Name, Active) 
VALUES (" & Me.txtENTID & "," & Me.txtDate & "," & Me.txtDate & "," & 
            Me.cmboUserID & "," & Me.cmboUserID & "," & Me.txtENTNAME & "," 
          & Me.Txtactive & "); "


DoCmd.RunSQL.sSQL

End Sub

【问题讨论】:

  • 我已经很长时间没有进行任何访问了,但我很确定您需要为字符串 (') 加上撇号,并且可能需要为日期/时间添加 #?此外,值得研究参数化查询。
  • NDJ 似乎是对的。与其运行 SQL,不如将其打印出来。错误很容易发现,值行中没有 ' 似乎是正确的。如果你不能从那里得到它,发布任何 print sSQL 返回,我们可以从那里开始
  • 这与它在 VBE 中出现的完全一样吗?你没有换行符。
  • @DarrenBartrup-Cook 不,我将 SQL 全部放在一行中
  • 你在设置一个字符串,字符串不是对象,不能设置。尝试删除它。

标签: sql database vba ms-access


【解决方案1】:

据我所知,代码中有几个错误。

您只在设置对对象的引用时使用SET - sSQL 是一个文本字符串。
DoCmd.RunSQL 不应该在RunSQL 之后有句号 - 只是文本字符串。
如果Me.txtENTNAME 是一个文本字符串,则它的前后应该有一个撇号。

Private Sub Command28_Click()

    Dim sSQL As String

    'No Set & ' before and after Me.txtENTNAME (assuming it's text).
    sSQL = "INSERT INTO TEST (Carrier_Ent_ID, Row_Insert_TS, Row_Update_TS, " & _
           "Row_Insert_User_ID, Row_Update_User_ID, Carrier_Ent_Name, Active) " & _
           "VALUES (" & Me.txtENTID & "," & Me.txtDate & "," & Me.txtDate & "," & _
           Me.cmboUserID & "," & Me.cmboUserID & ",'" & Me.txtENTNAME & "'," & Me.txtActive & "); "

    'No full stop after RunSQL.
    DoCmd.RunSQL sSQL

End Sub

【讨论】:

  • 添加parameters 以防止因输入错误的值而出错(例如Me.txtENTNAME 中的引号)。
  • @ComputerVersteher 参数的好链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
  • 2021-02-06
  • 2022-11-15
  • 1970-01-01
  • 2021-02-14
  • 1970-01-01
  • 2021-12-08
相关资源
最近更新 更多