【问题标题】:Excel VBA Access SQL StatementExcel VBA 访问 SQL 语句
【发布时间】:2021-09-10 19:44:02
【问题描述】:

我正在尝试将数据从 Excel 添加到访问数据库中,我想一次性添加许多值。

问题在于 Excel 报告 SQL 缺少尾随分号 (;) 这是失败的 SQL 代码的摘录。

这是构建的 SQL 语句

INSERT INTO ThisTable (FirstName, LastName) VALUES ('John','Smith'),('Ringo','Star'),('Chris','Jones');
' --- Test Access Creation --- '
Sub Example2()
    'the path to create the new access database
    Dim strPath As String
    'an DAO object
    Dim db As DAO.Database
    
    Dim command As String
    Let command = "INSERT INTO ThisTable (FirstName, LastName) " & _
                "VALUES " & _
                "('John','Smith')," & _
                "('Ringo','Star')," & _
                "('Chris','Jones');"
    
    Debug.Print command
    
    strPath = "A:\NewDB"
    Set db = DAO.OpenDatabase(strPath)
    'Set db = DAO.CreateDatabase(strPath, DAO.dbLangGeneral)
    'db.Execute "CREATE TABLE ThisTable " _
            & "(FirstName CHAR, LastName CHAR);"
            
    db.Execute command
                
    
    Dim rst As DAO.Recordset
    Set rst = db.OpenRecordset("Select * FROM ThisTable")
    
     'Begin row processing
    Do While Not rst.EOF
        
        Debug.Print Trim(rst.Fields(0)) & " " & Trim(rst.Fields(1))
        rst.MoveNext
       
    Loop
    
    db.Close
    
End Sub

【问题讨论】:

  • 我可能错了,但我认为 MS Access 不支持VALUES。您必须改用多个UNIONs。
  • MS Access 确实支持 VALUES 子句,但仅适用于一条记录。 @JonathanWillcock,可以写一个显示 UNION 方法的答案。

标签: sql excel vba ms-access


【解决方案1】:

使用 UNION 查询在一个 INSERT 操作中添加多个带有文字字符串的记录。

    Let command = "INSERT INTO ThisTable (FirstName, LastName) " & _
                  "SELECT FirstName, LastName FROM (" & _
                      "SELECT 'John' AS FirstName, 'Smith' AS LastName FROM ThisTable "  & _
                      "UNION SELECT 'Ringo', 'Star' FROM ThisTable " & _
                      "UNION SELECT 'Chris', 'Jones' FROM ThisTable)" & _

【讨论】:

  • 你真的需要FROM ThisTable吗?好久没用MS Access了,我觉得你可以简单的做SELECT 'x', 'y'
  • 我没有进行测试,UNION 似乎需要表或查询引用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
  • 2012-12-05
  • 2013-03-13
  • 1970-01-01
  • 2021-12-21
  • 1970-01-01
相关资源
最近更新 更多