如何在Coldfusion中为同一组输出具有行跨度且不重复的备注列(重新格式化)

  • 本文关键字:格式化 Coldfusion 输出 一组 coldfusion
  • 更新时间 :
  • 英文 :


我正在为一家公司编写软件。朋友们,我希望你们能帮助我。这家公司是一家油漆公司,有不同的产品类型、油漆类型和颜色。将生成显示项目编号、说明、数量和备注的方式账单。我正在按"产品类型"one_answers"油漆类型"进行排序。我还在对输出进行分组。

在这里,我希望注释跨越具有相同产品类型和油漆类型的所有油漆。例如,如果"产品类型"(Product Type)为"蜂蜜"(Honey),而"绘制类型"(Paint Type)则为"纹理"(Texture)。如果有5个数量为20的蜂蜜质地,则备注应横跨所有5个蜂蜜质地,并写下"蜂蜜质地总计20个数量"。我尝试循环,但数量、描述和项目的值重复。

我不想重复项目,数量,描述。只有"备注列"应跨具有相同产品类型和油漆类型的行。项目、说明和数量中的值不应循环。有关详细说明,请参阅图片。如果有任何帮助,我将不胜感激。请不要介意我的html

<cfquery datasource="ysr" name="getlistofbuyings">
        SELECT p.*, pt.paintcode, pt.*, pp.producttypename, pts.paintype, l.*
        FROM purchase p, paint pt, producttype pp, painttype pts, litre l
        WHERE p.transactionid = #transactionid#
        AND p.paintid = pt.paintid
        AND pt.producttypeid = pp.producttypeid
        AND pt.painttypeid = pts.painttypeid
        AND pt.litreid = l.litreid
        ORDER BY pp.producttypename, pts.paintype ASC       
    </cfquery>

            <table id="items" bgcolor="">
             <a name="afteradding"> 
              <tr bgcolor="#ccccee">
                  <th>ITEM</th>
                  <th>QUANTITY</th>
                  <th  class="blank" colspan="3">DESCRIPTION</th>
                  <th>REMARKS</th>
              </tr>
              </a>    

              <cfoutput group="producttypename" query="getlistofbuyings">              
               <cfoutput group="paintype">             
               <cfoutput group="litrename">
<cfquery datasource="ysr" name="numvb">
                    SELECT p.*, COUNT(purchaseid) as pan, SUM(quantity) as quani, pa.*, py.*, pp.producttypename, l.litrename
                    FROM purchase p, paint pa, painttype py, producttype pp, litre l
                    WHERE p.transactionid = #transactionid#
                    AND p.paintid = pa.paintid
                    AND pa.painttypeid = py.painttypeid
                    AND pa.litreid = l.litreid
                    AND pa.producttypeid = #producttypeid#
                    AND py.painttypeid = #painttypeid#
                    AND pa.producttypeid = pp.producttypeid
                    AND l.litreid = #litreid#
                </cfquery>
                <cfquery datasource="ysr" name="kilop">
                    SELECT COUNT(purchaseid) as newpur
                    FROM purchase
                    WHERE transactionid = #transactionid#
                </cfquery>
                <cfset rowss = #numvb.pan#>
                <cfset tot = #numvb.quani#>
                <cfset arrOfUsers = ArrayNew(1)>
                <cfoutput>
                    <cfset ArrayAppend(arrOfUsers,'<td>'&getlistofbuyings.quantity&getlistofbuyings.producttypeid&getlistofbuyings.painttypeid&'</td>')>
                </cfoutput>
                <cfloop from="1" to="#ArrayLen(arrOfUsers)#" index="i">
                <tr class="item-row">
                <cfset curm = #getlistofbuyings.currentrow#>


                <th><cfoutput>#curm#</cfoutput></th>

                <th>#getlistofbuyings.quantity#</th>
                 <th colspan="3" class="description"><span> #producttypename# #paintype# #paintcolor# #paintcode#</span></th>
                <cfif i EQ 1>
                <th nowrap="nowrap" rowspan="#ArrayLen(arrOfUsers)#" >#tot# bags of #producttypename# #paintype# with #litrename#</th>
                </cfif>
              </tr>
            </cfloop>
                </cfoutput>
                </cfoutput>
                </cfoutput>][1]

请尝试以下操作:

<!--- pseudo query --->
<cfscript>
  report = queryNew("productTypeName,paintType,paintColor,paintCode,quantity,litreName");
  queryAddRow(report, [["Honey","Texture","Brilliant White",1700,3,"20 litres"]]);
  queryAddRow(report, [["Honey","Texture","Off White",1701,8,"20 litres"]]);
  queryAddRow(report, [["Magic","Texture","Off White",1701,21,"20 litres"]]);
  queryAddRow(report, [["Magic","Texture","Brilliant White",1700,8,"20 litres"]]);
  queryAddRow(report, [["Princess","Gloss","Brilliant White",9102,9,"4 litres"]]);
  queryAddRow(report, [["Princess","Texture","Rose Pink",1712,3,"20 litres"]]);
  queryAddRow(report, [["Princess","Texture","Ivory",1704,1,"20 litres"]]);
  queryAddRow(report, [["Princess","Texture","Off White",1701,3,"20 litres"]]);
  queryAddRow(report, [["Princess","Texture","Off White",1701,3,"20 litres"]]);
</cfscript>
<!--- add groupRowspan and groupTotalQuantity columns --->
<cfscript>
  queryAddColumn(report, "groupRowspan", "integer", []);
  queryAddColumn(report, "groupTotalQuantity", "integer", []);
  if(report.RecordCount) {
      lastQueryRowToUpdate = 0;
      lastProductType = lastPaintType = lastLitreName = "";
      groupRowspan = 0;
      groupTotalQuantity = 0;
      for(rowNum=1; rowNum<=report.RecordCount; rowNum++) {
          if((report.productTypeName[rowNum] is not lastProductType) or (report.paintType[rowNum] is not lastPaintType) or (report.litreName[rowNum] is not lastLitreName)) {
              if(lastQueryRowToUpdate) {
                  querySetCell(report, "groupRowspan", groupRowspan, lastQueryRowToUpdate);
                  querySetCell(report, "groupTotalQuantity", groupTotalQuantity, lastQueryRowToUpdate);
              }
              lastQueryRowToUpdate = rowNum;
              lastProductType = report.productTypeName[rowNum];
              lastPaintType = report.paintType[rowNum];
              lastLitreName = report.litreName[rowNum];
              groupRowspan = 0;
              groupTotalQuantity = 0;
          }
          groupRowspan++;
          if(isValid("integer", report.quantity[rowNum])) {
              groupTotalQuantity += report.quantity[rowNum];
          }
          if((rowNum is report.RecordCount) and lastQueryRowToUpdate) {
              querySetCell(report, "groupRowspan", groupRowspan, lastQueryRowToUpdate);
              querySetCell(report, "groupTotalQuantity", groupTotalQuantity, lastQueryRowToUpdate);
          }
      }
  }
</cfscript>
<!--- table w/ rowspan --->
<table>
  <tr style="background-color:#cce;">
    <th>ITEM</th>
    <th>QUANTITY</th>
    <th>DESCRIPTION</th>
    <th>REMARKS</th>
  </tr>
  <cfloop query="report">
    <tr style="background-color:#ccc;">
      <cfoutput>
      <td>#report.CurrentRow#</td>
      <td>#report.quantity#</td>
      <td>#report.productTypeName# #report.paintType# #report.paintColor# #report.paintCode#</td>
      <cfif isValid("integer", report.groupRowspan)>
        <td rowspan="#report.groupRowspan#">#report.groupTotalQuantity# bags of #report.productTypeName# #report.paintType# with #report.litreName#</td>
      </cfif>
      </cfoutput>
    </tr>
  </cfloop>
</table>

谢谢!,

-Aaron

这看起来像死代码

<cfset ArrayAppend(arrOfUsers ...

<cfloop><tr>不平衡

<tr class="item-row">
        <cfset curm = #getlistofbuyings.currentrow#>
                <cfloop from="1" to="#ArrayLen(arrOfUsers)#" index="i">

      </tr>
    </cfloop>

使用它会很有用http://validator.w3.org

最新更新