1

スポーツのリストを出力するマスター クエリがあります。次に、クエリ 1 を提供する 2 つのサブクエリがあります。各スポーツに参加している人物に関する個人情報と、クエリ 2 です。クエリ 1 の人々が持っているスポーツの本です。各スポーツの一種のヘッダーとしてテーブル行を出力し、次にクエリ データの追加行を出力しようとしています。各スポーツの後にページを分割したいので、ページの下部にスポーツの説明行がなく、残りのデータが次の行に表示されません。

考えられるすべての場所に追加しようとしましたが、ドキュメントの先頭にある getsports クエリのレコード数と同じ空白ページが常に表示されます。

これが私が使用しているコードです。実際のクエリ データを削除しました。私が間違っていることについて誰か提案や考えがありますか?

<cfquery name="getterm" datasource="DS1">
    select * from dbo.semester where current = 1
</cfquery>


<cfquery name="getsports" datasource="DS1">
    SELECT * FROM [sports]


</cfquery>

<body>

    <div id="wrap">

        <cfinclude template="header.cfm">

            <!-- header end -->

            <div class="container" style="padding-top:0px;">


                <cfdocument format="PDF" mimetype="application/pdf" orientation="landscape">


                    <table width="100%" cellspacing="0" cellpadding="0" topmargin="0" leftmargin="0" border="0" style="font-size:10px">

                        <tr>
                            <td colspan="8" bgcolor="#e3edef" style="padding-top:10px; padding-bottom:10px; padding-left:2px; font-family:Arial;" align="center">Books Not Issued -
                                <cfoutput>#yearOfSport#</h1>
                                </cfoutput>
                            </td>
                        </tr>

                        <cfoutput>
                            <cfloop query="getsports">

                                <tr>
                                    <td colspan="8" style="padding-top:10px; padding-bottom:10px; padding-left:2px; font-family:Arial;" align="center">
                                        <h1>#getsports.descr#  </h1>
                                    </td>
                                </tr>



                                <cfquery name="getbooks" datasource="DS1">
                                    ...

                                </cfquery>

                                <cfloop query="getbooks">

                                    <cfquery name="getbooks2" datasource="DS1">
                                        ...

                                    </cfquery>

                                    <tr>

                                        <td align="left" style="border-bottom: 1px solid; border-top: 1px solid; padding-top:10px;padding-bottom:10px;font-family:arial">
                                            <h4>ID</h4></td>

                                        <td align="left" style="border-bottom: 1px solid; border-top: 1px solid; padding-top:10px;padding-bottom:10px;font-family:arial">
                                            <h4>Name</h4></td>

                                        <td colspan="4" align="left" style="border-bottom: 1px solid; border-top: 1px solid; padding-top:10px;padding-bottom:10px;font-family:arial">
                                            <h4>Sport</h4></td>



                                    </tr>

                                    <tr>

                                        <td align="left" style="padding-top:10px;padding-bottom:10px;font-family:arial; font-weight: normal;">#id#</td>

                                        <td align="left" style="padding-top:10px;padding-bottom:10px;font-family:arial; font-weight: normal;">#nameLast#, #nameFirst#, #nameMiddle# </td>

                                        <td colspan="4" align="left" style="padding-top:10px;padding-bottom:10px;font-family:arial; font-weight: normal;">#sport#</td>



                                    </tr>

                                    <tr>

                                        <td align="left" style="border-bottom: 1px solid ##cccccc; padding-top:10px;padding-bottom:10px;font-family:arial">Class</td>

                                        <td align="left" style="border-bottom: 1px solid ##cccccc; padding-top:10px;padding-bottom:10px;font-family:arial">ISBN</td>

                                        <td align="left" style="border-bottom: 1px solid ##cccccc; padding-top:10px;padding-bottom:10px;font-family:arial">Title</td>

                                        <td align="left" style="border-bottom: 1px solid ##cccccc; padding-top:10px;padding-bottom:10px;font-family:arial">Author</td>

                                        <td align="left" style="border-bottom: 1px solid ##cccccc; padding-top:10px;padding-bottom:10px;font-family:arial">Status</td>





                                    </tr>

                                    <cfloop query="getbooks2">
                                        <tr>

                                            <td align="left" style="padding-top:10px;padding-bottom:10px;font-family:arial">#getbooks2.subject#</td>

                                            <td align="left" style="padding-top:10px;padding-bottom:10px;font-family:arial">#getbooks2.ISBN#</td>

                                            <td align="left" style="padding-top:10px;padding-bottom:10px;font-family:arial">#getbooks2.title#</td>

                                            <td align="left" style="padding-top:10px;padding-bottom:10px;font-family:arial">#getbooks2.author#</td>

                                            <td align="left" style="padding-top:10px;padding-bottom:10px;font-family:arial">#getbooks2.status#</td>





                                        </tr>


                                    </cfloop>





                                </cfloop>

                            </cfloop>



                        </cfoutput>





                        <cfdocumentItem type="footer">
                            <table width="100%" style="font-size:10px;">



                                <tr>
                                    <td style="font-family:Arial;" align="left">
                                        <cfoutput>Page #cfdocument.currentpagenumber# of #cfdocument.totalpagecount# - #dateformat(now(), "mm/dd/yyyy")#</cfoutput>
                                    </td>

                                </tr>

                            </table>
                        </cfdocumentItem>

            </div>

            </table>

            </cfdocument>


    </div>
    <!-- Container end -->
    <div id="push"></div>
    </div>

    <cfinclude template="footer.cfm">
</body>
4

2 に答える 2

0

提案をありがとう。メイン出力内に追加のテーブルタグを含めることになりました。これを行うと、改ページが正しく機能しました。以前のやり方は、テーブル構造を壊していたと思います。

于 2016-07-01T17:30:49.187 に答える
0

免責事項: これらのヘッダー ファイルとフッター ファイルの内容はわかりませんが、ヘッダーとフッターは cfdocument タグの外側にあります。普段はしないのですが、何か理由があるのか​​もしれません。

データのループを中断するために、これ (以下) をループの最後に追加します。さらに外科的制御が必要な場合に備えて、カウンターを追加することもあります。

<div style="page-break-before:always">&nbsp;</div> 

そして、それはうまくいきます。

ある程度の精度が必要な場合。cf ドキュメントなしでページを実行し、ブラウザーからソース出力を取得して、必要なもの、不要なもの、およびブレークを発生させたい場所を把握し始めます。

次に、それを取得して、生の HTML 出力を cfdocument でラップし、目的の効果が得られるかどうかを確認します。

データが膨大な場合は、サブセットを取得して結果を制限し、そのレポートの小さなチャンクを管理できるようにします。

正気を保つために私がしているもう 1 つのこと。

私はcfsavecontentを使用し、すべてのHTML出力を変数に設定してから、それをcfdocumentに詰め込むので、いわば混乱していません...

例:

<cfsavecontent variable="buildUpReport">
<cfinclude template="header.cfm">
nested looping ad nauseum...
<div style="page-break-before:always">&nbsp;</div>
more ad nauseum looping...
<cfinclude template="footer.cfm">
</cfsavecontent>

<cfdocument localUrl="yes" 
  format="PDF" 
  mimetype="text/html" 
  marginbottom="0.15" 
  margintop="0" 
  marginright="0" 
  marginleft="0">

<cfoutput>#buildUpReport#</cfoutput>

<cfdocumentitem type="footer" evalatprint="true"> 
<table width="100%" border="0" cellpadding="0" cellspacing="0"> 
<tr><td align="center">
<cfoutput>
    #cfdocument.currentpagenumber# of 
    #cfdocument.totalpagecount# | 
    #dateformat(now(),"mm-dd-yyyy")#
</cfoutput>
</td></tr> 
</table> 
</cfdocumentitem>

</cfdocument>
于 2016-07-01T15:19:53.707 に答える