【问题标题】:How can I insert data from an Access form into a sql table using VBA?如何使用 VBA 将 Access 表单中的数据插入到 sql 表中?
【发布时间】:2015-09-18 01:59:37
【问题描述】:

这就是我所拥有的,我正在尝试从 Access 表单中获取字段(数据来自一个链接的 sql 表)并将它们插入到另一个链接的 sql 表中:

StrSQL = "INSERT INTO [dbo_Expense_Projection] ([StatusID],[TravellerUFID],[Email]) " & _
          VALUES(" & Me.StatusID & ", " Me.TravellerUFID & ", " Me.SubmitterUFID & ", " Me.email & ")
DoCmd.RunSQL StrSQL

但是我收到了这个错误

Compile error: Sub or Function not defined 

【问题讨论】:

    标签: sql vba ms-access


    【解决方案1】:

    我认为您只是缺少一些双引号:

    StrSQL = "INSERT INTO [dbo_Expense_Projection] ([StatusID],[TravellerUFID],[Email]) " & _
    "VALUES(" & Me.StatusID & ", " Me.TravellerUFID & ", " Me.SubmitterUFID & ", """ & Me.email & """)"
    DoCmd.RunSQL StrSQL
    

    您可以尝试打印 StrSQL 的内容并在运行前检查查询:

    Debug.Print StrSQL
    

    但我不喜欢用连接值创建 SQL 字符串(如果 Me.StravellerUFID 包含双引号会怎样?)

    我建议你使用 DAO 插入数据:

    Dim rs as Recordset
    Set rs = CurrentDb.OpenRecordset("dbo_Expense_Projection")
    rs.AddNew
    rs!StatusID = Me.StatusID
    rs!TravellerUFID = Me.TravellerUFID
    ' ...other fields
    rs.Update
    rs.Close
    

    【讨论】:

    • 参数有很多要说的。如果您需要更改后端,它们可以更好地扩展。
    【解决方案2】:

    SQL-String 中还缺少一些 & 符号:

    StrSQL = "INSERT INTO [dbo_Expense_Projection] ([StatusID],[TravellerUFID],[Email]) " & _
              "VALUES(" & Me!StatusID & ", " & Me!TravellerUFID & ", " & Me!SubmitterUFID & ", """ & Me!email & """)"
    

    我认为你应该在“我”和字段名之间使用感叹号。但我不想和这里的专家争论这个……;)

    【讨论】:

      【解决方案3】:

      这是最终的工作:

      Dim StrSQL As String
      
      StrSQL = "INSERT INTO dbo_Expense_Projection (StatusID,TravellerUFID,Email) 
                VALUES('" & Form!StatusID & "','" & Form!TravellerUFID & "','" & Form!Email & "')"
      
      DoCmd.SetWarnings False
      DoCmd.RunSQL StrSQL
      DoCmd.SetWarnings True
      

      【讨论】:

        猜你喜欢
        • 2012-07-26
        • 2011-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-22
        相关资源
        最近更新 更多