如何浏览查询结果?

时间:2016-12-16 10:20:37

标签: vbscript

我有一个问题:

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

1 个答案:

答案 0 :(得分: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查询字符串缺少字符串终止字符",会导致语法错误。
  • 当您在.Open()上致电ADODB.Recordset时,它会被填充,并且可以使用Do循环和.MoveNext()方法遍历,您需要额外的.Execute()不是必需的,并再次重新运行相同的查询。 .MoveNext()方法告诉ADODB.Recordset移动它的指针1记录,一旦到达结尾,.EOF的值将等于True。如果没有.MoveNext(),指针将不会移动到文件末尾(EOF),循环将无限期地运行或直到脚本崩溃,这两种情况都不好。
  • 使用.Fields()集合引用列需要索引(从0开始的序数值)或包含列的别名的字符串(在本例中为{{1} }})。在原始代码中,列别名不是字符串,这意味着VBScript会认为它是一个名为"num_uti"的变量,并且因为num_uti未初始化它会失败。