繁体   English   中英

vbscript ADO记录集更新

[英]vbscript ADO Recordset Update

我正在尝试使用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!"

使用IsNull函数检查Null值。 在我较旧的本地.chm中,甚至有一段

使用IsNull函数确定表达式是否包含Null值。 在某些情况下,例如If Var = Null和If Var <> Null,您可能希望将其评估为True的表达式始终为False。 这是因为任何包含Null的表达式本身就是Nul​​l,因此为False。

努力理解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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM