2016-03-01 50 views
0

我想寫一個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 

我假設循環返回的記錄將工作。

回答

2

什麼@trincotsays is correct修復通過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 
2

您的循環只會執行一次,因爲您不是迭代記錄,而是遍歷只有一列的列(字段)。然後,當您檢索該列的值時,將獲得當前(即第一個)記錄的值。

由於沒有更多列,循環結束。

這裏是你如何遍歷記錄:

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

    ' do something with value 
    ' 
    objRecordSet.MoveNext 
Loop