vbscript ADO Recordset更新

时间:2014-10-18 07:15:51

标签: vbscript

我正在尝试使用ADO和vb6更新访问mdb数据库中的路径,但没有成功。

脚本如下。第Rs1(columnName) = Replace( Rs1(columnName),oldPath,newPath)行会导致vbscript runtime err invalid use of Null

简单地说,我想将所有包含\\server2字符串的表更新为\\DBSE-46\。一世 我在win7 64bit上运行脚本

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!"

1 个答案:

答案 0 :(得分:1)

使用IsNull函数检查Null值。在我年长的本地.chm甚至还有一段

  

使用IsNull函数确定表达式是否包含   空值。您可能希望评估为True的表达式   在某些情况下,例如如果Var = Null并且If Var<>空值,   永远都是假的。这是因为任何包含Null的表达式都是   本身是空的,因此是假的。

了解If子句。在

if (Rs1(columnName) = NULL) Then
End If
Rs1(columnName) = Replace( Rs1(columnName),oldPath,newPath)

无论Rs1(columnName)的内容如何,​​都将执行最后一条语句。

if Not IsNull(Rs1(columnName)) Then
   Rs1(columnName) = Replace( Rs1(columnName),oldPath,newPath)
End If