经典 ASP:使用 HTML Table 显示查询结果时出现问题
Classic ASP: Trouble with displaying Query Results with HTML Table
我在以 HTML 形式显示查询结果时遇到问题。当我处理这段代码时,它在我的 HTML table 中显示空白单元格。任何提示或建议将不胜感激。
ASP:
<%
dim query, myDSN, Connect, rs
myDSN = "PROVIDER=MICROSOFT.ACE.OLEDB.12.0;DATA SOURCE=" & Server.Mappath("/MasterDB.accdb")
query = "SELECT * FROM DAY_DATA;"
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open myDSN
Set rs = Server.CreateObject("ADODB.recordset")
rs.Open query, Connect
%>
结果页HTML:
<table border="1" width="100%">
<tr>
<%for each x in rs.Fields
response.write("<th>" & x.name & "</th>")
next%>
</tr>
<%do until rs.EOF%>
<tr>
<%for each x in rs.Fields%>
<td><%Response.Write(x.value)%></td>
<%next
rs.MoveNext%>
</tr>
<%loop
rs.close
conn.close
%>
</table>
如果我能让它工作,我会用他们的输入生成的字符串替换查询字符串。感谢阅读!
我创建这个函数就是为了完成那个任务...希望这有帮助:
Sub WriteRS(ByRef myRS)
Dim i, fCount
Response.Write ("<br><br clear=""all""><table cellspacing=1 cellpadding=5 border=1><tr>")
For i = 0 To myRS.Fields.Count - 1
Response.Write ("<td nowrap>" & myRS.Fields(i).name & "</td>" & vbNewLine)
Next
Response.Write ("</tr>" & vbNewLine)
If Not myRS.BOF THEN myRS.MoveFirst
fCount = myRS.Fields.Count
Do Until myRS.EOF
Response.Write ("<tr>" & vbNewLine)
For i = 0 To fCount - 1
Response.Write ("<td nowrap>" & CheckValue(Trim(myRS.Fields.Item(i).Value), " ") & "</td>" & vbNewLine)
Next
Response.Write ("</tr>" & vbNewLine)
Response.Flush
myRS.MoveNext
Loop
If Not myRS.BOF THEN
myRS.MoveFirst
Else
Response.Write ("<tr><td colspan=""" & fCount & """>No Data Found</td</tr>" & vbNewLine)
End If
Response.Write ("</table><br clear=""all"">")
End Sub
希望对您有所帮助。
尝试将 x.value
替换为 rs(x.name)
。
<%do until rs.EOF%>
<tr>
<%for each x in rs.Fields%>
<td><%=rs(x.Name)%></td>
<%next
rs.MoveNext%>
</tr>
<%loop%>
如果 x.Name
也没有返回任何内容(即您在 table 中看不到列名),请尝试调整游标类型和锁类型。
rs.Open query, Connect, 1, 2
我在以 HTML 形式显示查询结果时遇到问题。当我处理这段代码时,它在我的 HTML table 中显示空白单元格。任何提示或建议将不胜感激。
ASP:
<%
dim query, myDSN, Connect, rs
myDSN = "PROVIDER=MICROSOFT.ACE.OLEDB.12.0;DATA SOURCE=" & Server.Mappath("/MasterDB.accdb")
query = "SELECT * FROM DAY_DATA;"
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open myDSN
Set rs = Server.CreateObject("ADODB.recordset")
rs.Open query, Connect
%>
结果页HTML:
<table border="1" width="100%">
<tr>
<%for each x in rs.Fields
response.write("<th>" & x.name & "</th>")
next%>
</tr>
<%do until rs.EOF%>
<tr>
<%for each x in rs.Fields%>
<td><%Response.Write(x.value)%></td>
<%next
rs.MoveNext%>
</tr>
<%loop
rs.close
conn.close
%>
</table>
如果我能让它工作,我会用他们的输入生成的字符串替换查询字符串。感谢阅读!
我创建这个函数就是为了完成那个任务...希望这有帮助:
Sub WriteRS(ByRef myRS)
Dim i, fCount
Response.Write ("<br><br clear=""all""><table cellspacing=1 cellpadding=5 border=1><tr>")
For i = 0 To myRS.Fields.Count - 1
Response.Write ("<td nowrap>" & myRS.Fields(i).name & "</td>" & vbNewLine)
Next
Response.Write ("</tr>" & vbNewLine)
If Not myRS.BOF THEN myRS.MoveFirst
fCount = myRS.Fields.Count
Do Until myRS.EOF
Response.Write ("<tr>" & vbNewLine)
For i = 0 To fCount - 1
Response.Write ("<td nowrap>" & CheckValue(Trim(myRS.Fields.Item(i).Value), " ") & "</td>" & vbNewLine)
Next
Response.Write ("</tr>" & vbNewLine)
Response.Flush
myRS.MoveNext
Loop
If Not myRS.BOF THEN
myRS.MoveFirst
Else
Response.Write ("<tr><td colspan=""" & fCount & """>No Data Found</td</tr>" & vbNewLine)
End If
Response.Write ("</table><br clear=""all"">")
End Sub
希望对您有所帮助。
尝试将 x.value
替换为 rs(x.name)
。
<%do until rs.EOF%>
<tr>
<%for each x in rs.Fields%>
<td><%=rs(x.Name)%></td>
<%next
rs.MoveNext%>
</tr>
<%loop%>
如果 x.Name
也没有返回任何内容(即您在 table 中看不到列名),请尝试调整游标类型和锁类型。
rs.Open query, Connect, 1, 2