Перебирайте имена столбцов и помещайте их в переменные.ASP - PullRequest
1 голос
/ 14 сентября 2011

Мне нужно иметь возможность перебирать имена столбцов и помещать имя столбца и его значение в переменную. Мой код выглядит так.

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

Но это не работает. Как я могу перебрать имена столбцов и установить их как переменные без указания имени каждого столбца?

Спасибо

Ответы [ 3 ]

8 голосов
/ 14 сентября 2011

Я думаю, что вы должны использовать 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 голосов
/ 20 сентября 2011

Используйте приведенный выше код и сохраните пару имя / значение в сеансе, например, сеанс («таблица» и имя поля) = rs (имя поля).Я часто использую его для хранения информации о пользователе, клиенте, поставщике и т. Д.Работает как кеширование тоже.Вы можете создать подпрограммы, такие как reloadCustomer (customerNumber) для перезагрузки.Таким образом, вы не собираетесь в БД для получения базовой информации.Обновите его при изменении ...

Словарь объекта:

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 голосов
/ 14 сентября 2011

Если вы хотите сохранить имена полей, вы можете использовать Словарь и иметь каждое имя поля в качестве ключа, а затем значения каждого столбца в виде массива.

Сначала уменьшите словарь:

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
...