我想通過VBScript將一些.csv文件中的數據導入MS Access數據庫。將.csv導入MS Access。 「AtEndOfStream」不讀取最後一行
Sub CSVImport
connStr = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=P:\somedatabase.accdb"
'Define object type
Set objConn = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
'Open Connection
objConn.open connStr
objRecordSet.Open "SELECT * FROM SomeTable", _
objConn, adOpenStatic, adLockOptimistic
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("P:\someFile.csv")
Do Until objFile.AtEndOfStream
strVKBL_Stamm = objFile.ReadLine
arrVKBL_Stamm = Split(strVKBL_Stamm, ";")
objRecordSet.AddNew
objRecordSet("FirstName") = arrVKBL_Stamm(0)
objRecordSet("LastName") = arrVKBL_Stamm(1)
objRecordSet("Date") = arrVKBL_Stamm(...)
objRecordSet("Type") = arrVKBL_Stamm(11)
Loop
Set objRecordSet = Nothing
Set objFSO = Nothing
Set objFile = Nothing
Set objConn = Nothing
End Sub
這個腳本獲取所有數據從我的CSV文件,但它確實錯過了最後一道防線。當我在.csv結尾處打回兩次(一次不足)時,我的所有數據都會被導入。
我的備份計劃是將AtEndOfStream
位更改爲類似
If arrVKBL_Stamm(0) = 0 Then
Exit Do
,並添加一個零到文件中。問題是,.csv是從SAP導出的報告(這是 - afaik - 無法導出到MS Access本身),因此該部分需要另一個腳本或必須手動完成。
有沒有人有線索或給我一個提示如何解決這個問題?
您發佈的代碼會引發錯誤,不僅是因爲缺少'End Sub',而是因爲您試圖修改已關閉的記錄集。請顯示您的實際代碼。 –
增加了其餘的,不知道這是否澄清事情。但我希望如此。 :) –
你的代碼仍然無法工作。你永遠不會打開一個文件,你永遠不會在'objRecordSet'中添加一條新記錄。 [mcve] – Andre