[英]WSF and ADO with DB2 , recordset.MoveNext not supported error in vbscript
我試圖使用.wsf文件和vbscript在從db2返回的記錄集上循環。
vbscript libfile(lib.vbs)如下
'***************
Const ADOCon="Provider=IBMDADB2.1;Password=*****;User ID=*****;Data Source=yourdatasourc;"
'************************
'ADO environment is Initialised here
'*************************
Function ADOINI(strDB2Cn)
With objConnection
.Open strSQLCn
.CursorLocation=adUseClient
End With
If objConnection.Errors.Count > 0 Then
ErrorOut "Conncetion has Failed."
End If
With objCommand
.ActiveConnection = objConnection
.CommandType = adCmdText
End With
End Function
'********************
'Execute ADO Comand
'strSQL - SQL Statment to execute
'Return ADO RecordSet.
'*******************************
Function Exec(strSQL)
objCommand.CommandText = strSQL
Exec=objCommand.Execute
End Function
'******************************************
Function ErrorOut(errMsg)
Wscript.StdErr.Write Now()&" "&errMsg&vbCrLf
End Function
'****************
Function StdOut(msg)
WScript.StdOut.Write Now()&" "&msg&vbCrLf
End Function
'************************
我正在使用trial.wsf文件,以獲取我試圖在其上循環的記錄集
<?xml version="1.0" encoding="utf-8" ?>
<package xmlns="http://schemas.microsoft.com/WindowsScriptHost">
<job id="main">
<object id="objConnection" progid="ADODB.Connection" />
<object id="objCommand" progid="ADODB.Command" />
<object id="objError" progid="ADODB.Error" />
<reference object="ADODB.Connection" />
<reference object="ADODB.Command" />
<reference object="ADODB.Error" />
<script language="VBScript" src="lib.vbs">
ADOINI(ADOCon)
Set objRS = Exec("SELECT REF_CRSETTINGS.NAME, REF_CRSETTINGS.VALUE FROM WMRCR.REF_CRSETTINGS REF_CRSETTINGS WHERE TRIM(UPPER(REF_CRSETTINGS.CATEGORY)) IN ('SAMPLE_SETTINGS') ORDER BY REF_CRSETTINGS.CRSETTINGSCODE")
' the above recordset is a name value pair based on the category
StdOut objRS("NAME").Value 'this worked fine
objRS.MoveNext ' this doesnt work neither does check for EOF or BOF
</script>
</job>
</package>
我最初的想法是游標類型可能是錯誤的,
但是我什至不能將cursosr類型設置為dynamic,但不支持vbscript錯誤。
可能與提供者有關,但無法確認。
我想做這樣的事情,但無法在記錄集上循環。
Do While Not objRS.EOF
Select Case UCase(trim(objRS("NAME").Value))
Case "SOAPSERVER" SOAPSERVER=objRS("VALUE").Value
Case "SOAPMESSAGE" SOAPMESSAGE=objRS("VALUE").Value
Case "SOAPACTION" SOAPACTION=objRS("VALUE").Value
Case Else ErrorOut "Error: InCorrect Value"
End Select
objRS.MoveNext
Loop
確保這里有一些基本/愚蠢的錯誤,不熟悉wsf和腳本..
函數是一段命名的代碼,它通過(在VBScript中)返回分配給函數名稱的內容。 庫中的大多數“功能”都沒有,因此也沒有。
Function Exec嘗試返回記錄集,即對象。 VBScript中的對象分配需要Set
。 所以:
Function Exec(strSQL)
objCommand.CommandText = strSQL
Set Exec=objCommand.Execute
End Function
根據注釋中提到的知識庫文章,您可能只想使用將記錄集轉儲到數組中。 GetRows並處理數組。 檢查一下
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.