ASP / SQL Server - 如果语句不起作用

时间:2012-07-10 15:51:24

标签: sql-server asp-classic vbscript conditional

努力将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>

resutls通常显示在一个垂直表中。返回10条记录,按团队排序。 OPS1,OPS10,OPS2等。

请注意,10由于alpha排序后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>

它不起作用,我在输出中得到它'Not OPSx'。

If Test不起作用。

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

<% 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函数

1 个答案:

答案 0 :(得分:0)

SQL Server可能不接受TRIM,但接受RTRIMLTRIM,例如:

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

如果你不想修剪你的SQL语句(我建议你这样做),你总是可以尝试修剪这样的IF语句:

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

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

!OPS1 !