Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 循环遍历列名并将它们放入变量中。ASP_Variables_Loops_Asp Classic - Fatal编程技术网

Variables 循环遍历列名并将它们放入变量中。ASP

Variables 循环遍历列名并将它们放入变量中。ASP,variables,loops,asp-classic,Variables,Loops,Asp Classic,我需要能够循环遍历列名,并将列名及其值放入变量中。我的代码看起来像这样 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 但这是行不通的。如何在不必指定每个列名的情况下循环列名并将其设置为变量 谢谢 我认为你应该使用这种方法。返回二维数组。通过GetRows不需要列

我需要能够循环遍历列名,并将列名及其值放入变量中。我的代码看起来像这样

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
但这是行不通的。如何在不必指定每个列名的情况下循环列名并将其设置为变量

谢谢

我认为你应该使用这种方法。返回二维数组。通过GetRows不需要列名。 考虑这一点:

SQL=“从表1中选择列1、列2”
设置rs=conn.execute(SQL)
arrRecs=rs.GetRows
对于行=0到UBound(arrRecs,2)'行
对于col=0到UBound(arrRecs,1)“列
响应。写入rs.Fields(col).Name&“=”&arrRecs(col,row)&”
下一个
响应。写“
” 下一个 克洛斯
我认为你应该使用这种方法。返回二维数组。通过GetRows不需要列名。 考虑这一点:

SQL=“从表1中选择列1、列2”
设置rs=conn.execute(SQL)
arrRecs=rs.GetRows
对于行=0到UBound(arrRecs,2)'行
对于col=0到UBound(arrRecs,1)“列
响应。写入rs.Fields(col).Name&“=”&arrRecs(col,row)&”
下一个
响应。写“
” 下一个 克洛斯
如果要存储字段名,可以使用字典,将每个字段名作为键,然后将每列的值作为数组

首先,把字典翻成十行:

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(“列名:
”) 对于oData.键中的每个fld 响应.写入(fld&“”) 下一个 响应。写入(“
”)
或显示特定列的值:

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
Response.Write(“名为Id的列的值:
”) 如果oData.存在(“Id”),则 tempArray=oData(“Id”) 对于x=0到UBound(tempArray) 响应.写入(临时数组(x)和“
”) 下一个 其他的 响应。写入(“该列不存在”) 如果结束
如果要存储字段名,可以使用字典,将每个字段名作为键,然后将每列的值作为数组

首先,把字典翻成十行:

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(“列名:
”) 对于oData.键中的每个fld 响应.写入(fld&“”) 下一个 响应。写入(“
”)
或显示特定列的值:

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
Response.Write(“名为Id的列的值:
”) 如果oData.存在(“Id”),则 tempArray=oData(“Id”) 对于x=0到UBound(tempArray) 响应.写入(临时数组(x)和“
”) 下一个 其他的 响应。写入(“该列不存在”) 如果结束
使用上述代码,并将名称/值对存储在会话中,如会话(“table.”&fieldname)=rs(fieldname)。我经常使用它来存储用户、客户、供应商等信息。它也像缓存一样工作。您可以创建子例程,如重新加载客户(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"
set dic=server.createobject(“scripting.dictionary”)
dic.添加“keyName1”、“Michael”
dic.添加“keyName2”、“John”
dic.添加“keyName3”、“Steve”

dic.Item(“keyName2”)使用上述代码,并将名称/值对存储在会话中,如会话(“table.”&fieldname)=rs(fieldname)。我经常使用它来存储用户、客户、供应商等信息。它也像缓存一样工作。您可以创建子例程,如重新加载客户(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"
set dic=server.createobject(“scripting.dictionary”)
dic.添加“keyName1”、“Michael”
dic.添加“keyName2”、“John”
dic.添加“keyName3”、“Steve”

dic.Item(“keyName2”)这很好,但我需要将返回的值放入变量中,以便在我的页面上重用它们。这很好,但我需要将返回的值放入变量中,以便在我的页面上重用它们。嗨,Michael,我不能使用会话,因为我将使用IIS实现Web Garden。我需要能够将这些值存储在标准变量中,并在页面中本地重用它们。然而,我曾经遇到过这样的错误,当我抓起一把钥匙时,它也会把它取下来——不确定这是出于设计,还是一个错误。如上所述…嗨,Michael,我不能使用会话,因为我将用IIS实现Web Garden。我需要能够将这些值存储在标准变量中,并在页面中本地重用它们。然而,我曾经遇到过这样的错误,当我抓起一把钥匙时,它也会把它取下来——不确定这是出于设计,还是一个错误。见上文。。。