private void CreateReportTable(string tableName) { StringBuilder SB = new StringBuilder(); SB.AppendFormat("/*dialect*/ CREATE TABLE {0}\n ", tableName); SB.AppendFormat(" (\n "); SB.AppendFormat(" FANALYSISID NUMBER (10) NOT NULL,\n "); SB.AppendFormat(" FANOTHERANALYSISID NUMBER (10) DEFAULT 0,\n "); SB.AppendFormat(" FSALORDERDIMEID NUMBER (10) NOT NULL,\n "); SB.AppendFormat(" FYEARPERIOD VARCHAR2 (43 BYTE),\n "); SB.AppendFormat(" FWORKSHOP NVARCHAR2 (255),\n "); SB.AppendFormat(" FWORKSHOPID NUMBER (10) DEFAULT 0,\n "); SB.AppendFormat(" FSALEORG NVARCHAR2 (255),\n "); SB.AppendFormat(" FSALEGROUP NVARCHAR2 (255),\n "); SB.AppendFormat(" FSALORDERBILLNO VARCHAR2 (255 BYTE),\n "); SB.AppendFormat(" FSALORDERSEQ NUMBER (10),\n "); SB.AppendFormat(" FPRDTRACKNO NVARCHAR2 (255),\n "); SB.AppendFormat(" FCUSTOMER NVARCHAR2 (255),\n "); SB.AppendFormat(" FINVOICECUSTOMER NVARCHAR2 (255),\n "); SB.AppendFormat(" FSHIRTORDNO NVARCHAR2 (255),\n "); SB.AppendFormat(" FMTONO NVARCHAR2 (255),\n "); SB.AppendFormat(" FPRODUCTNUMBER NVARCHAR2 (255),\n "); SB.AppendFormat(" FCLOTHINGSERIES NVARCHAR2 (255),\n "); SB.AppendFormat(" FSLEEVETYPE NVARCHAR2 (255),\n "); SB.AppendFormat(" FMALEORFEMALE NVARCHAR2 (255),\n "); SB.AppendFormat(" FMATERIALSOURCE NVARCHAR2 (255),\n"); SB.AppendFormat(" FFABRICSOURCE NVARCHAR2 (255),\n "); SB.AppendFormat(" FCLOTHINGCONTENTS NVARCHAR2 (255),\n "); SB.AppendFormat(" FSPECIALART NVARCHAR2 (255),\n "); SB.AppendFormat(" FPROCESSMETHOD NVARCHAR2 (255),\n "); SB.AppendFormat(" FFABRICFLOWERCOLOR NVARCHAR2 (255),\n "); SB.AppendFormat(" FSALEDIRECT NVARCHAR2 (255),\n "); SB.AppendFormat(" FWORKSHOPOUTQTY NUMBER (10),\n "); SB.AppendFormat(" FWORKSHOPCUROUTQTY NUMBER (10),\n "); SB.AppendFormat(" FCURROUTSTOCKQTY NUMBER (10),\n "); SB.AppendFormat(" FSALEAMOUNT NUMBER (23,10),\n "); SB.AppendFormat(" FORDERCOST NUMBER (23,10),\n "); SB.AppendFormat(" FFABRCIID NUMBER(10) DEFAULT 0,\n "); SB.AppendFormat(" FINSTOCKDAYS NUMBER (23,10) DEFAULT 0,\n "); SB.AppendFormat(" FINSTOCKDATE NVARCHAR2 (255),\n "); SB.AppendFormat(" FCONTRACTDELIVERYTIME NVARCHAR2 (255),\n "); SB.AppendFormat(" FREALDELIVERYTIME NVARCHAR2 (255),\n "); SB.AppendFormat(" FCONTRACTFABRICPRICE NUMBER (23,10),\n "); SB.AppendFormat(" FCONTRACTCONSUMPT NUMBER (23,10),\n "); SB.AppendFormat(" FCONTRACTFABRICQTY NUMBER (23,10),\n "); SB.AppendFormat(" FMLINCOME NUMBER (23,10),\n "); SB.AppendFormat(" FFLINCOME NUMBER (23,10),\n "); SB.AppendFormat(" FJGFINCOME NUMBER (23,10),\n "); SB.AppendFormat(" FSYMLINCOME NUMBER (23,10),\n "); SB.AppendFormat(" FREALFABRICPRICE NUMBER (23,10),\n "); SB.AppendFormat(" FREALCONSUMPT NUMBER (23,10),\n "); SB.AppendFormat(" FREALFABRICQTY NUMBER (23,10),\n "); SB.AppendFormat(" FREALFABRICAMOUNT NUMBER (23,10),\n "); SB.AppendFormat(" FSELFCONSUMPT NUMBER (23,10),\n "); SB.AppendFormat(" FREFERRINGFACTOR NUMBER (23,10),\n "); SB.AppendFormat(" FSTANDARDCOST NUMBER (23,10),\n "); SB.AppendFormat(" FMLCOST NUMBER (23,10),\n "); SB.AppendFormat(" FFLCOST NUMBER (23,10),\n "); SB.AppendFormat(" FJGFCOST NUMBER (23,10),\n "); SB.AppendFormat(" FSYMLCOST NUMBER (23,10),\n "); var ParentColumnNumber = this.DynamicColumn.Select(o => o.ParentNumber).ToList().Distinct(); foreach (var colNumber in ParentColumnNumber) { string ParentColumnName = this.DynamicColumn.Where(p => p.ParentNumber == colNumber).Select(o => o.ParentName).FirstOrDefault(); if (ParentColumnName == null || ParentColumnName == "") continue; var Columns = this.DynamicColumn.Where(o => o.ParentNumber == colNumber).OrderBy(p => p.Number); foreach (var col in Columns) { SB.AppendFormat(" {0} NUMBER(23,10),\n ", col.Number); } //if (Columns.Count() > 1) //{ SB.AppendFormat(" {0} NUMBER(23,10) DEFAULT 0,\n ", colNumber); //} } SB.AppendFormat(" FMLPROFIT NUMBER(23,10) DEFAULT 0,\n "); SB.AppendFormat(" FFLPROFIT NUMBER(23,10) DEFAULT 0,\n "); SB.AppendFormat(" FJGFPROFIT NUMBER(23,10) DEFAULT 0,\n "); SB.AppendFormat(" FSYMLPROFIT NUMBER(23,10) DEFAULT 0,\n "); SB.AppendFormat(" FORDERPROFIT NUMBER(23,10) DEFAULT 0,\n "); SB.AppendFormat(" FORDERUNITPROFIT NUMBER(23,10) DEFAULT 0,\n "); SB.AppendFormat(" FANOTHERPROFIT NUMBER(23,10) DEFAULT 0,\n "); SB.AppendFormat(" FANOTHERUNITPROFIT NUMBER(23,10) DEFAULT 0,\n "); SB.AppendFormat(" FREMARKS NVARCHAR2 (255),\n"); SB.AppendFormat(" FIDENTITYID NUMBER(10) DEFAULT 0\n "); SB.AppendFormat(" )\n "); DBUtils.Execute(this.Context, SB.ToString()); }
var ParentColumnNumber = this.DynamicColumn.Select(o => o.ParentNumber).ToList().Distinct(); foreach (var colNumber in ParentColumnNumber) { if (colNumber == "FXSFYSUM") { string ParentColumnName = this.DynamicColumn.Where(p => p.ParentNumber == colNumber) .Select(o => o.ParentName) .FirstOrDefault(); if (ParentColumnName == null || ParentColumnName == "") continue; ListHeader Cheader = header.AddChild(); Cheader.Caption = new LocaleValue(ParentColumnName, this.Context.UserLocale.LCID); var Columns = this.DynamicColumn.Where(o => o.ParentNumber == colNumber).OrderBy(p => p.Number); foreach (var col in Columns) { Cheader.AddChild(col.Number, new LocaleValue(col.Name, this.Context.UserLocale.LCID), SqlStorageType.SqlDecimal); } if (Columns.Count() > 1) { Cheader.AddChild(colNumber, new LocaleValue("小计", this.Context.UserLocale.LCID), SqlStorageType.SqlDecimal); } } }
不管前台显示什么,后头表该有的都有,然后控制显示字段。刚开始后台表已做处理,相同组的列名添加汇总字段,不管组里的列数是否大于1,都添加汇总列。
忘记了,突然想起来,那么前台表就随意控制。
在过滤界面,可设置显示隐藏列属性。
以上好像没啥价值;