0
我試圖更新路徑訪問mdb
數據庫使用ADO和vb6沒有成功。vbscript ADO記錄集更新
腳本如下。行Rs1(columnName) = Replace(Rs1(columnName),oldPath,newPath)
導致vbscript runtime err invalid use of Null
。
簡而言之,我想更新所有包含字符串\\server2
至\\DBSE-46\
的表格。我 正在運行Win7上64位的腳本
c:\windows\syswow64\cscript.exe C:\SQLTest\HarishScripts\DatabaseAccessProg6.vbs >> C:\SQLTest\HarishScripts\DatabaseAccessProg6.txt
Option Explicit
WScript.Echo "START of ADO access program...."
Dim DBpath
Dim tableName
Dim columnName
Dim oldPath
Dim newPath
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' Set all external variables here...
DBpath = "C:\DBTest;"
tableName = "Test"
columnName = "Path"
oldPath = "\\SERVER2\"
newPath = "\\DBSE-46\"
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Dim Rs1
Set Rs1 = CreateObject("ADODB.Recordset")
Dim i
Dim AccessConnect
AccessConnect = "Driver={Microsoft Access Driver (*.mdb)};" & _
"Dbq=MedDataSource.mdb;" & _
"DefaultDir=" & DBpath & _
"Uid=Admin;Pwd=;"
'--------------------------
' Recordset Object Method
'--------------------------
' Recordset Open Method #4: Open w/o Connection & w/Connect String
Dim sqlStmt
sqlStmt = "SELECT * FROM " & tableName
' use LockTypeEnum.adLockOptimistic = 3. This allows update of the recordset.
Rs1.LockType = 3
Rs1.Open sqlStmt, AccessConnect
Do Until Rs1.EOF
'WScript.Echo Rs1("Path")
if (Rs1(columnName) = NULL) Then
End If
Rs1(columnName) = Replace(Rs1(columnName),oldPath,newPath)
Rs1.MoveNext
Loop
' Close the recordset...
Rs1.Close
Set Rs1 = Nothing
WScript.Echo "..."
WScript.Echo "..."
WScript.Echo "DONE!"
感謝Ekkehard.Horner 您的解決方案和預期一樣的Windows XP系統上,但自帶的錯誤「未指定的錯誤,行44.1碼80004005,來源(空)。即」 Rs1.Open sqlStmt,AccessConnect 「 顯然這表明權限錯誤,但是以管理員身份運行,並且文件夾權限設置爲admin,完全控制。請問您可以諮詢嗎? 再次感謝 – addcom 2014-10-19 14:44:40
上面的錯誤代碼是因爲我沒有在64位Windows上安裝IIS 7,啓用ISS中的大部分選項後,我可以使用批處理文件或調用批處理文件來運行vb腳本。要安裝ISS以控制面板,程序和功能打開/關閉功能,請從列表中選擇IIS – addcom 2014-10-21 15:11:47