首页 > 解决方案 > MS Access 使用 VBA 插入数据,运行时错误 3061

问题描述

我的 VBA 数据库中有一个简单的测试表,其结构如下:

Field Name | Data Type
Header1    | Short Text
Header2    | Short Text

我还有一个 CSV 文件,其中包含以下数据:

Header1;Header2
A;1
B;2
C;3

我正在尝试编写一个简单的 VBA 代码,它将 CSV 中的新数据插入到测试表中,到目前为止我有这个:

Sub ImportDataFromCSV()
    Dim db As DAO.Database
    Set db = CurrentDb()
    db.Execute _
    "INSERT INTO Testing (" & _
             "[Header1]" & _
             ",[Header2])" & _
             " SELECT Header1, Header2" & _
             " FROM [Text;FMT=CSVDelimited;HDR=Yes;DATABASE=C:\Users\PC\Desktop\;].[testing#csv];", dbFailOnError
    db.TableDefs.Refresh
    RefreshDatabaseWindow
End Sub

不幸的是,当我运行我的潜艇时,我得到了

运行时错误 3061:参数太少。预计2。

我知道这与它有关

"INSERT INTO Testing (" & _
             "[Header1]" & _
             ",[Header2])"

我对吗?

我认为当从基于另一个 SELECT 的数据集插入时,这与 MySQL 的工作方式类似,我认为当我链接 CSV 时,它会以类似的方式工作。

我在这里阅读了一些问题,但无济于事。

我还在查询编辑器中重新创建了查询,并在要求我输入 Header1 和 Header2 的参数值后追加了 3 个没有数据的新空白行。

我可以改变什么来让它工作?

谢谢

标签: sqlvbams-access

解决方案


你的代码是正确的。问题是该文件没有像 csv 预期的那样以逗号分隔。所以它被视为 1 列。您可以将 csv 更改为

Header1,Header2 
A,1 
B,2 
C,3

它会起作用。


推荐阅读