2011-09-13 139 views
1

我需要能夠循環訪問列名稱並將顏色名稱和它的值放入一個變量中。我的代碼看起來像這樣。循環遍歷列名並將它們放入變量中。 ASP

SQL = "select column1, column2 from table1" 
set rs = conn.execute(SQL) 

For each fld in rs.fields 
    fld.name = rs(fld.name) 
Next 

rs.close 

但這不起作用。我如何遍歷列名並將它們設置爲變量而不必指定每個列名?

感謝

回答

6

我認爲你應該使用GetRows方法。返回一個二維數組。您不需要通過GetRows列名稱。如果要存儲的字段名

SQL = "select column1, column2 from table1" 
set rs = conn.execute(SQL) 
arrRecs = rs.GetRows 
For row = 0 To UBound(arrRecs, 2) 'Rows 
    For col = 0 To UBound(arrRecs, 1) 'Columns 
     Response.Write rs.Fields(col).Name & " = " & arrRecs(col, row) & " " 
    Next 
    Response.Write "<br />" 
Next 
rs.close 
+0

這是好的,但我需要把值返回到變量,這樣我可以在我的頁面上重用他們。 – Benzine

0

,你可以使用字典,並有每個字段的名稱作爲關鍵字,那麼每列作爲數組的值: 考慮這一點。

首先,declate字典:

Set oData = Server.CreateObject("Scripting.Dictionary") 

現在使用這兩個循環填充數據:

For Each fld In rs.Fields 
    oData.Add fld.Name, Array() 
Next 

Do Until rs.EOF 
    For Each fld In rs.Fields 
     tempArray = oData(fld.Name) 
     ReDim Preserve tempArray(UBound(tempArray) + 1) 
     tempArray(UBound(tempArray)) = rs(fld.Name) 
     oData(fld.Name) = tempArray 
    Next 
    rs.MoveNext 
Loop 

最後,你可以使用這樣的代碼顯示的所有列名:

Response.Write("Column names:<br />") 
For Each fld In oData.Keys 
    Response.Write(fld & "&nbsp;&nbsp;&nbsp;") 
Next 
Response.Write("<br />") 

或顯示特定列的值:

Response.Write("Values for column named Id:<br />") 
If oData.Exists("Id") Then 
    tempArray = oData("Id") 
    For x=0 To UBound(tempArray) 
     Response.Write(tempArray(x) & "<br />") 
    Next 
Else 
    Response.Write("Such column does not exist") 
End If 
0

使用上面的代碼,並在會話中存儲名稱/值對,如會話(「table。」& fieldname)= rs(fieldname)。我用它存儲用戶,客戶,供應商等信息。像緩存一樣工作。您可以創建像reloadCustomer(customerNumber)這樣的子例程來重新加載。這樣你就不會去數據庫瞭解基本信息。改變時更新...

Dictionary對象:

set dic = server.createobject("scripting.dictionary") 
dic.add "keyName1", "Michael" 
dic.add "keyName2", "John" 
dic.add "keyName3", "Steve" 

dic.Item("keyName2") <-- gives you "John" 
+0

嗨邁克爾,我不能使用會議,因爲我將與IIS實施Web Garden。我需要能夠將這些值存儲在標準變量中,並在頁面中本地重用它們。 – Benzine

+0

在這種情況下,我會說使用Dictionary對象。然而,我曾經遇到過一些錯誤,當我抓住一個密鑰時,它也會將其刪除 - 不確定這是否是設計或錯誤。往上看... –