我想通过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