2016-07-01 7 views
1

У меня есть главный запрос, который я выводил, который дает мне список видов спорта. Затем у меня есть два подзапроса, которые дают мне Query1: информация о лицах, которые участвуют в каждом виде спорта, и Query2: Sport записывает людей из запроса 1. Я пытаюсь вывести строку таблицы как своего рода заголовок для каждого вида спорта, а затем дополнительные строки для данных запроса. Я хотел бы сломать страницу после каждого вида спорта, поэтому у меня нет строки описания спорта в нижней части страницы, а остальные данные на следующем.Проблема с перерывом страницы cfdocument

Я попытался добавить все возможные места, но я всегда получаю пустые страницы, равные числу записей из запроса 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> 
+0

Как вы вставляете разрыв страницы PDF? Не похоже, что вы используете '' где угодно. –

+0

Да, я удалил его для публикации, так как все, что я разместил, произвел странные результаты. – spacerobot

+0

ОК. Я не был уверен. WKHTMLTOPDF предлагает возможность держать divs вместе, ломаться после, прерывать до и т. Д. И, как представляется, генерировать меньшие, более быстрые и лучшие результаты. Я написал CFTag здесь, если вам интересно. http://gamesover2600.tumblr.com/post/125851537339/generating-pdfs-using-coldfusion-wkhtmltopdf –

ответ

0

Отказ от ответственности: Я понятия не имею, что в тех колонтитулов files..but верхний и нижний колонтитулы находится вне cfdocument тега. Обычно я этого не делаю, но, возможно, есть причина, почему вы это делаете.

Чтобы получить данные о перерывах в циклах, я добавляю это (ниже) в конец моих циклов, и иногда я добавляю счетчик, я нуждаюсь в большем контроле.

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

И это просто работает.

Если вам нужна точность. Я бы запустил вашу страницу без документа cf и получал исходный вывод из браузера и начинал рисовать то, что вам нужно, не нужно и где вам нужны ваши перерывы.

Затем возьмите это и просто оберните cfdocument вокруг необработанного вывода HTML и посмотрите, получаете ли вы желаемые эффекты.

Если у вас есть данные, то захватите подмножество, чтобы ограничить ваши результаты, чтобы вы могли управлять меньшим патроном этого отчета.

Еще одно, что я делаю для своего здравомыслия.

Я использую 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> 
+0

Спасибо, позвольте мне поиграть с этим и посмотреть, смогу ли я заставить его работать. – spacerobot

0

Спасибо за предложения. В итоге я включил дополнительные теги таблицы в свой основной вывод. Как только я это сделал, разрывы страниц работали правильно. Я думаю, что то, как я делал это раньше, нарушало структуру таблицы.