【发布时间】:2015-11-05 20:44:51
【问题描述】:
当我通过 ADODB 将 Excel 电子表格导出到 Access 数据库时,我遇到了一种奇怪的行为。 Office 版本是 2013 32 位,在 Win7 64 位上运行。步骤如下:
我创建了一个名为“test.accdb”的新 Access 文件,其中只有一个表“orders”和一个字段“OrderID强>'。该表是空的。
我创建了一个新的 .csv 文件 orders.csv。稍后我会展示这个文件的内容和最终结果。
-
我有一个带有以下宏的 Excel 插件:
Public Sub updateAccess() Dim con As New ADODB.Connection Dim connectionString As String Dim rs As New ADODB.Recordset Dim sql As String Dim Filename As String Filename = Application.ActiveWorkbook.Path & "\test.accdb" connectionString = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" & Filename connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Filename Call con.Open(connectionString) sql = "DELETE FROM orders" Call con.Execute(sql) sql = "INSERT INTO orders " & _ "SELECT * FROM [Excel 12.0 Xml;HDR=YES;DATABASE=" & _ ActiveWorkbook.FullName & "].[" & ActiveWorkbook.Sheets(1).Name & "$]" Set rs = con.Execute(sql) Call con.Close Set con = Nothing End Sub 然后我使用 Excel 打开 order.csv 文件,运行宏,然后使用 Access 打开 test.accdb。根据csv文件的内容,输出不同的结果:
案例A
orders.csv:
OrderID
1
A
test.accdb,在“订单”表中:
OrderID
1
A
案例 B
orders.csv:
OrderID
1
A
3
test.accdb,在“订单”表中
OrderID
<blank>
1
3
案例 C
orders.csv:
OrderID
1
A
3
B
C
D
test.accdb,在“订单”表中
OrderID
1
3
A
B
C
D
为什么案例 B 失败了?
我无法绕过它。我尝试了两个驱动程序,但没有成功。
【问题讨论】: