0

私は次のコードを持っています:

sql="SELECT  COUNT(*) AS CurrentInvoice from [Invoices].[dbo].[InvoiceSentInformation] WHERE (InvoiceSeries = 18) AND (InvoicePeriodStartDate='"&SelectedMonth&"') AND (CustomerBillingGroupId IN (2, 3, 11))" 
Response.Write SelectedMonth
'Response.Write sql
r.open sql,c_SQL,3,3
IF r.recordcount>0 THEN
    CurrentInvoice=r("CurrentInvoice")
    for i=1 to r.recordcount
   %>
       <TR align="center">
        <TD><%=CurrentInvoice%></TD>
        <TD>
         <%


  %>

そして、出力は0です。

sql-serverでクエリを実行すると、結果は15,000を超える数値になります。
データベースに表示されるのと同じ出力を表示するようにコードを修正するにはどうすればよいですか?

4

2 に答える 2

0

forループでは、1からr.recordcountまでループしているようです。これは、for ループに入っていないため、何も表示されないことを意味します。

for ループなしで CurrentInvoice を表示しようとしましたか? 次に、SQLからのカウントを表示するだけです

于 2012-12-30T21:04:20.080 に答える
0

上記のように、for ループを削除する必要があります。select aggregate() from table を使用すると、テーブルが空であっても、結果は常に 1 行になります。

スニペットで除外しただけかもしれませんが、表を表示するには、適切な書式設定が必要です。上記は開いたままにし、決して閉じないようです。2 番目は ?

HTML 出力のソースを表示することをお勧めします。そうすれば、自分のコードがすべて書かれていることがわかります。上記に起因するゼロは別の場所に由来する可能性があり、上記は(ソースを表示せずに)目に見えるものを出力していない可能性があります。

SQL については、参考までに、count(*) の代わりに count(1) を使用することでパフォーマンスの向上を確認できます。後者では、SQL ですべての列のメタデータをチェックします。

于 2012-12-31T05:37:59.427 に答える