2016-12-16 52 views
2

我有一個查詢:如何瀏覽查詢結果?

sqlPU = "SELECT num_uti FROM myTable WHERE C_IDENT_A = '5' 

,但我不知道我的瀏覽效果。

我嘗試這一點,但它不工作

req.Open sqlPU, oConn 

If Not req.EOF Then 
    Set resultSet = oConn.Execute(sqlPU) 
    For Each result In resultSet 
     WScript.Echo resultSet.Fields(num_uti).Value 
    Next 
End if 

回答

3

嘗試重組這樣的代碼;

Dim oConn, req, sqlPU 
'Create connection 
Set oConn = CreateObject("ADODB.Connection") 
Call oConn.Open("yourconnectionstring") 

'Set query 
sqlPU = "SELECT num_uti FROM myTable WHERE C_IDENT_A = '5'" 

'Open recordset 
Set req = CreateObject("ADODB.Recordset") 
Call req.Open(sqlPU, oConn) 

'Loop the return data 
Do While Not req.EOF 
    'Output field called num_uti. 
    WScript.Echo req.Fields("num_uti").Value 
    'Move to next record 
    Call req.MoveNext() 
Loop 
'Clean-up 
Call req.Close() 
Set req = Nothing 

Call oConn.Close() 
Set oConn = Nothing 

在問題的代碼有幾個問題,

  • sqlPU查詢字符串缺少字符串終止字符"並會導致一個語法錯誤。
  • 當您在ADODB.Recordset稱之爲.Open()它是填充,可以使用Do環和.MoveNext()方法,你就不需要並重新運行相同的查詢額外.Execute()遍歷。 .MoveNext()方法告訴ADODB.Recordset移動它的指針1記錄,一旦到達.EOF的值將等於True。如果沒有.MoveNext(),指針將不會移動到文件末尾(EOF),並且循環將無限期地運行或直到腳本翻轉,這兩者都不是好的。
  • 使用.Fields()收集參照列要求要麼索引(順序的數值從0開始)或包含列的別名(在這種情況下"num_uti"的字符串。在原始代碼中,列別名不是字符串,這意味着VBScript將假定它是一個變量,稱爲num_uti,因爲num_uti未初始化,它將失敗。