簡體   English   中英

WSF和ADO與DB2,recordset.MoveNext在vbscript中不受支持的錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM