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 個のレコードが返されます。OPS1、OPS10、OPS2など
アルファソートのために 1 の後に 10 が来ることに注意してください。これを修正する方法がわかりません。
出力に含まれる可能性のあるチームは常に 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 テストが機能していません。
各セルを次のように修正すると
<% 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 関数を受け入れません