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 個のレコードが返されます。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 関数を受け入れません

4

1 に答える 1

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 !
于 2012-07-10T16:06:34.520 に答える