0

努力将 RS 的输出显示为水平表。

我有一个基于以下 SQL 的 RS

SQL = "SELECT INTRAY.TEAM, Count(INTRAY.DOC_GUID) AS NumDocs " & _
"FROM INTRAY INNER JOIN DOCUMENT ON INTRAY.DOC_GUID = DOCUMENT.GUID " & _
"WHERE DOCUMENT.DOC_TYPE = 'PNEW' " & _
"AND DOCUMENT.DATE_RECEIVED > '"& Year(FromDate) &"-"& Month(FromDate) &"-"& Day(FromDate) &"' " & _
"GROUP BY INTRAY.TEAM, INTRAY.MAIL_STATUS, INTRAY.FILE_SYSTEM " & _
"HAVING INTRAY.MAIL_STATUS = 'NT' AND INTRAY.FILE_SYSTEM ='B' " & _
"ORDER BY INTRAY.TEAM ;"

我在普通表格中显示结果,如下所示

<table border=1>
    <tr>
        <th>Team</th>
        <th>Records</th>
    </tr>
<%Do While Not RS.EOF %>
    <tr>
        <td><%=RS("TEAM")%></td>
        <td><%=RS("NumDocs")%></td>
    </tr>
<% RS.MoveNext
Loop%>
</table>

结果通常显示在垂直表中。返回 10 条记录,按 Team 排序。OPS1、OPS10、OPS2 等

请注意,由于 alpha 排序,10 在 1 之后,不知道如何修改。

只有 10 支球队可以在输出中,但有时并非所有球队都会有结果,所以表格只能返回 2 或 3 支球队。

我想创建一个表,其中包含每个可能的团队(1-10)的硬编码列标题,然后下一行是 NumDocs 的输出值

团队 1 10 2 3 4 5 6 7 8 9

结果 8 4 7 17 4 87 20 19 1 7

所以,然后我关闭记录集,然后重新打开它;

<%RS.Close%>
<br>

<%
RS.cursortype=adOpenKeyset
RS.Open SQL, IConn, 3, 3
RS.MoveFirst
%>

并写表;

<table border=1>
<th>Report</th>
<th>OPS1</th>
<th>OPS10</th>
<th>OPS2</th>
<th>OPS3</th>
<th>OPS4</th>
<th>OPS5</th>
<th>OPS6</th>
<th>OPS7</th>
<th>OPS8</th>
<th>OPS9</th>
<tr>
<td>Untouched New Records (total)</td>
<td>
<%If RS("Team") = "OPS1" Then %>
<% Response.Write(RS("NumDocs")) 
Else Response.Write("Not OPS1")
RS.MoveNext
End If %>
</td>
<td>
<%If RS("Team") = "OPS10" Then %>
<% Response.Write(RS("NumDocs")) 
Else Response.Write("Not OPS1")
RS.MoveNext
End If %>
</td>
<td>
<%If RS("Team") = "OPS2" Then %>
<% Response.Write(RS("NumDocs")) 
Else Response.Write("Not OPS2")
RS.MoveNext
End If %>
</td>
<td>
<%If RS("Team") = "OPS3" Then %>
<% Response.Write(RS("NumDocs")) 
Else Response.Write("Not OPS3")
RS.MoveNext
End If %>
</td>
<td>
<%If RS("Team") = "OPS4" Then %>
<% Response.Write(RS("NumDocs")) 
Else Response.Write("Not OPS4")
RS.MoveNext
End If %>
</td>
<td>
<%If RS("Team") = "OPS5" Then %>
<% Response.Write(RS("NumDocs")) 
Else Response.Write("Not OPS5")
RS.MoveNext
End If %>
</td>
<td>
<%If RS("Team") = "OPS6" Then %>
<% Response.Write(RS("NumDocs")) 
Else Response.Write("Not OPS6")
RS.MoveNext
End If %>
</td>
<td>
<%If RS("Team") = "OPS7 " Then %>
<% Response.Write(RS("NumDocs")) 
Else Response.Write("Not OPS7")
RS.MoveNext
End If %>
</td>
<td>
<%If RS("Team") = "OPS8" Then %>
<% Response.Write(RS("NumDocs")) 
Else Response.Write("Not OPS8")
RS.MoveNext
End If %>
</td>
<td>
<%If RS("Team") = "OPS9" Then %>
<% Response.Write(RS("NumDocs")) 
Else Response.Write("Not OPS9")
RS.MoveNext
End If %>
</td>
</tr>
</table>

它不起作用,我在输出中得到的只是“不是 OPSx”。

If 测试不起作用。

如果我将每个单元格修改为

<% Response.Write(RS("NumDocs")) 
RS.MoveNext  %>

然后它将写入值,但我需要测试 RS 中该行中 TEAM 的值,如果我将其修改为

<% If RS("Team") = "OPS1" Then
Response.Write(RS("NumDocs")) 
End If
RS.MoveNext  %>

它不起作用,什么也不写。

任何想法为什么 mty IF 不起作用?当我写出 TEAM 的值时,它们看起来没问题并且没有尾随空格。SQL Server 不接受 TRIM 函数

4

1 回答 1

0

SQL Server 可能不接受TRIM,但它应该接受RTRIMand LTRIM,例如:

SELECT INTRAY. RTRIM(TEAM), Count(INTRAY.DOC_GUID) AS NumDocs 

如果您不想修剪 SQL 语句(我建议您这样做),您可以随时尝试修剪您的IF语句,如下所示:

<%If Trim(RS("Team")) = "OPS1" Then %>  

如果您现在<% Response.Write "!" & RS("Team") & "!") %>处理您的数据,我怀疑您会看到如下内容:

!OPS1 !
于 2012-07-10T16:06:34.520 回答