2016-12-16 8 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クエリ文字列は、文字列の終端文字"が欠落していると構文エラーが発生します。
  • あなたが必要と再び同じクエリを再実行していないん余分な.Execute()、それは人口であるとDoループと.MoveNext()方法を使用して横断することができますADODB.Recordset.Open()を呼び出します。 .MoveNext()メソッドは、ADODB.Recordsetにポインタ1のレコードを移動するように指示します。末尾に達すると、.EOFの値はTrueに等しくなります。 .MoveNext()を指定しないと、ポインタはファイル(EOF)の末尾を超えて移動せず、ループは無期限に実行されるか、またはスクリプトがうまくいかないまでは実行されません。
  • .Fields()コレクションを使用して列を参照するインデックス(0から始まる序数値)または列(この場合"num_uti"で)のエイリアスを含む文字列のいずれかを必要とします。元のコードでは、列エイリアスは文字列ではないため、VBScriptはnum_utiという変数とみなし、num_utiは初期化されていないため失敗します。
関連する問題