0

私は古典的なASPの人であるとは主張していませんが、時々あなたはあなたがしなければならないことをしなければなりません。私の問題は、これがASPを介したカスタム作成のレポートであり、ユーザーが小計の実行と総計の表示も望んでいることです。正直なところ、どうすればよいかわかりません。現在、レポート全体がこのようにラップされています。レポートの表示方法は、問題にとってそれほど重要ではありません。

<%do while (adoRsTrade.AbsolutePage = iPageCurrent) and (not adoRsTrade.EOF)
NewRep = adoRsTrade("calIncludedRep")

if CurRep <> NewRep or FirstTime="T" and (not adorsTrade.BOF) then %>

そのCurRepの値を合計し、「小計」として表示します

<%

FirstTime="F"
CurRep = adoRsTrade("calIncludedRep")
adoRsTrade.MoveNext
loop %>

私は決してASPの第一人者ではないと述べたので、私が得ることができるどんな助けも大いに感謝されるでしょう。ありがとう、NickG

小計のものを更新します。ループの外側でdowhileループを再実行すると、すべてのデータが表示されて合計されるため、総計が完成します。簡単に(実際にはそうではありませんが)、.MoveNextが前にヒットしたことがわかります。 NewRepをチェックできるようになりました。これは、小計の合計と、それが新しい担当者であるかどうかのチェックです。これは、前の担当者の小計を表示することを意味します。

<%do while (adoRsTrade.AbsolutePage = iPageCurrent) and (not adoRsTrade.EOF)
NewRep = adoRsTrade("calIncludedRep")

if CurRep = NewRep then
        curPrincipal = adoRsTrade("mPrincipal")
        totPrincipal = totPrincipal + curPrincipal
            curInterest = adoRsTrade("mInterest")
            totInterest = totInterest + curInterest
        curCommission = adoRsTrade("calCommission")
        totCommission = totCommission + curCommission
            curSECFee = adoRsTrade("mSECFee")
            totSECFee = totSECFee + curSECFee
        curSvcFee = adoRsTrade("mSvcCharge")
        totSvcFee = totSvcFee + curSvcFee
            curNet = adoRsTrade("mNetAmount")
            totNet = totNet + curNet
end if    
if CurRep <> NewRep or FirstTime="T" and (not adorsTrade.BOF) then
  If FirstTime <> "T" then%>
      <TR>
        <td>
            <table class='FontStandardMinus1' border=0 cellPadding=0 align='left' cellSpacing=0 width="100%" bgcolor='#ffffff'>
                 <TR>
                    <td width="59%" align="left"><b>SubTotals<!-- for <%Response.Write(CurRep) %>-->:</b></td>
                    <td width="10%" valign=top align=right><%=FormatNumber(totPrincipal,2)%></td>
                    <td width="7%" valign=top align=right><%=FormatNumber(totInterest,2)%></td>
                    <td width="7%" valign=top align=right><%=FormatNumber(totCommission,2)%></td>
                    <td width="5%" valign=top align=right><%=FormatNumber(totSECFee,2)%></td>
                    <td width="4%" valign=top align=right><%=FormatNumber(totSvcFee,2)%></td>
                    <td width="9%" valign=top align=right><%=FormatNumber(totNet,2)%></td>
                </TR>
            </table>
        </td>
    </TR>
<%end if      
curPrincipal = 0
totPrincipal = 0
curInterest = 0
totInterest = 0
curCommission = 0
totCommission = 0
curSECFee = 0
totSECFee = 0
curSvcFee = 0
totSvcFee = 0
curNet = 0
totNet = 0 %>
<TR>
<TD width="100%">
<table class='FontStandardMinus1' border=0 cellPadding=0 align='left' cellSpacing=0 width="100%" bgcolor='#ffffff'>
<tr>
<td width=100%><b><%=adoRsTrade("calIncludedRep")%></b></td>

</tr>
</table>
</TD>
</TR>
<%end if%>
<%

FirstTime="F"
'CalCom = CalCom + adoRsTrade("calCommission")
CurRep = adoRsTrade("calIncludedRep")
adoRsTrade.MoveNext

loop%>

したがって、テーブルに表示した後で値を0にリセットしようとしていることがわかりますが、そのテーブルは、ヒットで.MoveNextがヒットした後にのみ表示されます。つまり、レコード1〜5を合計して表示したい場合でもレコード6はすでに.MoveNextによってヒットされており、値セットから破棄されています。これが長かったことをお詫びしますが、コメントに更新されたコードを含めることができないのは嫌です。助けてくれてありがとう

4

1 に答える 1

1

ループの後に変数totPrincipal、totInterest、totCommissionを出力すると仮定すると、私が考えることができる唯一の問題は、データ型とrs.MoveFirstです。

ところで:パフォーマンス上の理由から、単一のループで実行してみてください。

Dim subtotPrincipal: subtotPrincipal = 0
Dim totPrincipal: totPrincipal = 0
Dim CurRep: CurRep = 0
Dim NewRep: NewRep = 0

adoRsTrade.MoveFirst
Do 
    NewRep = adoRsTrade("calIncludedRep")       
    ...
    subtotPrincipal = subtotPrincipal + CLng(adoRsTrade("mPrincipal"))
    totPrincipal = totPrincipal + CLng(adoRsTrade("mPrincipal"))
    ...

    If (CurRep <> NewRep And Not adorsTrade.BOF) Or adoRsTrade.EOF Then
        Response.Write subtotPrincipal
        subtotPrincipal = 0
    End If

    CurRep = NewRep
    adorsTrade.MoveNext
Loop Until adoRsTrade.EOF

Response.Write totPrincipal
于 2013-03-18T14:10:30.723 に答える