这是这个问题的后续帖子。
我正在尝试将数据从.csv放入.mdb(MS Access 2000)。
如果数据库存储在我的硬盘驱动器上,但该脚本位于我通过网络访问的其他驱动器上,则此脚本工作正常。我在那里拥有完全的权利,我可以手动插入新的数据集,没有任何问题。
'There are several other Subs in this .hta-file
'these two are specified along with some other public variables
'in the beginning
Const adOpenStatic = 3
Const adLockOptimistic = 3
Sub CSVImport
connStr = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=S:folderpath with blanks ß and ,commassomedatabase.mdb"
'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("ID") = arrVKBL_Stamm(0)
objRecordSet("LastName") = arrVKBL_Stamm(1)
objRecordSet("Date") = CDate(arrVKBL_Stamm(2))
objRecordSet("More") = arrVKBL_Stamm(...)
objRecordSet("andMore") = arrVKBL_Stamm(...)
objRecordSet.Update
Loop
MsgBox "All done"
Set objRecordSet = Nothing
Set objFSO = Nothing
Set objFile = Nothing
Set objConn = Nothing
End Sub
我的.csv文件如下所示:
50009900;Doe;01.01.12;foo;bar
在脚本运行时,我没有收到任何错误。我检查了存储在arrVKBL_Stamm(...)
中的字符串,它们都没问题。我的最后一个MsgBox
弹出,脚本停止,我的数据库中没有任何反应。
有什么想法吗?
我回复了你的第一个线程,但我想在这里重申,你正在重新发明一个运行良好的轮子。我不建议使用VBScript来完成您要做的事情。您可以直接在 Access 本身中以 VBA 编写相同的代码。您甚至不需要这样做,因为 SAP 在后端使用标准数据库引擎。可以设置直接从 SAP 拉取到 Access 的链接表。无导出\导入。这是一张实时桌子。
我讨厌给你"不要那样做"作为答案,但这绝对是你的正确答案。
因此,直接使用链接到 SAP 或将此代码移动到 Access VBA 并从那里运行它。
,因为它是一个静态记录集adOpenStatic
因为它不允许在数据库上更新记录,只允许客户端记录集:
objRecordSet.Open "SELECT * FROM SomeTable", objConn, adOpenStatic, adLockOptimistic
您需要动态或其他类型的游标:
objRecordSet.Open "SELECT * FROM SomeTable", objConn, adOpenDynamic, adLockOptimistic