1

我正在尝试编写一个从表中获取一组数据的 VBScript UFT 测试(它将是 100 条记录)。正如您从下面的查询中看到的那样,我只会选择一列。

SELECT TOP 100 l_Name FROM lessee

我能够让第一条记录显示在消息框中,但我只是将其作为测试。我现在要做的是将每条记录添加到一个数组中,以便稍后循环它们以更改 WebEdit 文本框的值。

以下是我当前的代码,但我很难弄清楚这一点。

Dim DBQuery 
DBQuery = "Select top 100 l_Name from lessee"

objConnection.Open "Provider=sqloledb.1;Server=TestServer;User Id=User;Password=Test123;Database=DBTest"

objRecordSet.Open DBQuery,objConnection

' Return the Result Set  '''
For Each element In ObjRecordset.Fields.Item
    Value = objRecordSet.fields.item(element)               
    MsgBox Value
Next

' Release the Resources  '''
objRecordSet.Close        
objConnection.Close     

Set objConnection = Nothing
Set objRecordSet = Nothing

我假设遍历返回的记录会起作用。

4

2 回答 2

3

@trincot所说 的解决循环问题是正确ADODB.Recordset的,但是如果您想获取记录集并放入Array其中,则有一种更简单的方法。

Dim data
'... (Recordset connection and execution code omitted)
If Not objRecordset.EOF Then data = objRecordset.GetRows()

GetRows()返回一个二维数组。第一个元素包含列,第二个元素包含行,例如,使用data上面的数组访问第五行的第二列,您将使用

If IsArray(data) Then
  value = data(1, 4)
End If

注意: Array变量元素从零开始作为序数,因此第二列是1,第五行是4

您可以使用类似的循环遍历记录数据For

Dim row, rows

If IsArray(data) Then
  rows = UBound(data, 2)
  For row = 0 To rows
    'First column of the current row
    WScript.Echo data(0, row)
    'Second column of the current row
    WScript.Echo data(1, row)
    '... etc
  Next
End If
于 2016-03-01T22:59:44.423 回答
2

您的循环只会执行一次,因为您不是在遍历记录,而是遍历只有一个列(字段)。然后,当您检索该列的值时,您将获得当前(即第一条)记录的值。

由于没有更多的列,循环结束。

以下是您迭代记录的方式:

Do While Not objRecordSet.EOF
    value = objRecordSet("l_Name")

    ' do something with value
    '
    objRecordSet.MoveNext
Loop
于 2016-03-01T19:38:33.460 回答