WSF和ADO与DB2,recordset.MoveNext不支持VBScript中的错误

WSF和ADO与DB2,recordset.MoveNext不支持VBScript中的错误

问题描述:

我想循环使用.wsf文件和VBScript从DB2返回的记录集。WSF和ADO与DB2,recordset.MoveNext不支持VBScript中的错误

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文件,以getback上我试图环

<?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类型设置为动态,得到不支持的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和脚本精通。 。

+0

你见过http://support.microsoft.com/kb/288785吗? – Fionnuala 2008-12-19 14:07:43

根据评论中提到的知识库文章,您可能只想使用将记录集转储到数组中。 GetRows并处理数组。 Check this

函数是一段代码,它通过(在VBScript中)返回一些指定给函数名称的代码。你图书馆的大多数“功能”都没有,因此也没有。

Function Exec试图返回一个记录集,即一个对象。 VBScript中的对象分配需要Set。所以:

Function Exec(strSQL) 
    objCommand.CommandText = strSQL 
    Set Exec=objCommand.Execute 
End Function