當我通過ADODB將Excel電子表格導出到Access數據庫時,我遇到了一個奇怪的行爲。 Office版本是在Win7 64bit上運行的2013 32bit。這些步驟如下:Excel工作表通過ADODB不一致行爲導出到Access
我創建了一個叫做「test.accdb」新的Access文件,只是一個表「訂單」和一個字段「的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文件,運行宏,然後打開test.accdb使用Access。根據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失敗?
我無法將頭圍住它。我試了兩個司機,但沒有運氣。