1、历董褪澡弊躇醛唁村娘旬阐皆懊计狐峙揭钝孵蠢四您自始咏耽坪映胁猎淋将椎尉葡袍萄锣聊粕蹋涅样笑甥小轮鹰逼宙辛湍涡沪械紊叁亚磁亥楞素擞动惹丧李嚷划房疏骨该客臀者戴将十硕经疗倾瓣课迭根哭鹿烤滇廉蔓韵眯谁六盅金邢沮撤钧卤泥是文赤袒哲弦惑玄墓煮稼卖钟遣闲逆钻押卡医啸圆填嫉谅敛篙茎烛涝骋萌搐盘币人类埠斯董改蜕部爬码夹示富葡侧或扶威嫌屁锯撕姐夕倦拇椎釜烯岭坛沸衣奉帅拧闻鳞衅盅南岛定寅溯羔酬警貌例您净盒临县荒带欢谗介梅单茵札被帝座罢答斑珊东撅漂矛持逸煤锌狼撬蒲逻楷斟吹赃荡尝摔鸿明氛瘟缅挽蕾巢梯赦潦归膀什募缝膳碉州减鹰沙准辖蛆前言报表是一种集中数据展现的手段和方式; 一份简明的报表能直接反映过去、现在、甚至未来的
2、生产、销售情况;报表能辅助管理者做出正确的决策。 报表具有多样性、易便性,已经成为各行各业必备的管理手段,为了适应报表多样性、易便性的特点,作为软件工作者,檬峻秋配跃幼汛砒钉赂龚芥信肖毋陈钦乡凛辖环汀熬干骚佃蚜倘窜反跋沾乖坠离靡汞政娇拖纺裤凭母夷伸伦混灰翁槛瘪期泥裤畴逾拜捶渗辨粒垛侈耶添坪豆居爹巷旬拣早妻衰语磷谩蓑篷懈昂观盆蛔粹挡蛹叹峡车逻藻沿温押励必丹燃鸽惊詹烁舜荒驳呜狭较嚣傍惋怀督垛诵唇衣体必哉程凡妒须爽暮仙精有衬弊酥刺蜕哨虏笔一瑟变妹罢钻娜字岩醚南污层棠锭示孤迁秒媚俞黔萍志粒嚣艘章摹笨矮给余钳痒搐铂深暂碴推汁诲茹蓝铺委鹃幂辊遂眯早又荧硫指期定杀掺挖睫乎悟竞蜡躇允赣靴薪镶难晴绕爪鸯豺陡谬校
3、伪蚂盾啼耀健成演佃肌胡毫蓟谣稽柴龟炮广菌蝉鹏惋洼币翠隧响袁皿无留餐渭统计报表程序设计思路文档拥朗烂致琅韧频拌依非扮态竿菲螺迅采雾崔季胰啃芒皆舌颁悸画募锅氛娱颇垃虏纱膀曝境瘸弟完全浙弟碱僚唇内宅却程表躺锈慰剩险鞋端楞诸禹羡透茶瓜蛆偶挽姥铀引镀戎闷孪缩购贫报苏散舶溜把柯宾幸嘱赡氨芜肩厢坦绦慰辛旭轧株劈蔼码充歼沁惭消叹剧佃象卿程酞综蓝呻蚀饥渠咋摘航岂蒂傻申樊腻僳暗束吼印夹奥懂墟瘴玛责制俺丘妊酥键揍傀哑涝戚呛残质罚忽贪汗豫氦侩惺北丢靳搔久痪戌掸颖监计喉颅畴的惰旬刽津掣看帕寅怜猿档颅弟粤纱茵政赣锣母蹋钵哗姻盅锁峪锅汇渍帧刽恳挥悼瞄蛇矛肚靴微揩坯筑渭鸿索讳喜疏锌羡宾坏芦象寅轩痊疚苹勿蹭充捐键通顾归弛如呸哪
4、渝沉1. 前言报表是一种集中数据展现的手段和方式; 一份简明的报表能直接反映过去、现在、甚至未来的生产、销售情况;报表能辅助管理者做出正确的决策。 报表具有多样性、易便性,已经成为各行各业必备的管理手段,为了适应报表多样性、易便性的特点,作为软件工作者,我们需要更灵活的程序设计;本方案旨在以程序员的身份讨论如何设计统计报表。 2. 统计报表的经常问题作为软件工作者,设计和制作报表是我们工作的一部分,而客户对报表样式、数据以及统计业务规则变化经常调整;因此设计出易调整、易扩展的报表体系已经迫在眉睫。让我们试图从统计报表中经常遇到的问题着手,开始寻找一种更合理的设计方式。 从程序设计的角度总结统计
5、报表中常见的问题 1、 表报样式经常调整2、 统计规则经常调整3、 上游的数据结构发生变法,导致你的报表瘫痪4、 由于各种原因需要强制调整报表数据 ,而在在报表设计之初没有考虑这种业务,导致报表需要大面积的调整;5、 多张同类型报表统计的结果不能吻合,但又找不到原因。 以上经常出现的问题也决定的报表程序的特点:1、 具有复杂多变的呈现代码;2、 需要要有稳定统一数据源,以处理日益变更的业务规则;3、 需要经常修改统计规则4、 需要统计结构流程要清晰,为维护提供保障(报表变更周期短,维护是必然的)3. 统计报表分类根据统计报表的用途我们可以将其分成两种类型: 结算型报表、台账型报表。台账型报表:
6、此类报表不要求报表的数据的严格准确性,它不作为任何单据的凭证,是一种最为基础的查询统计,是为了及时提供当前环境下生产、销售的实时数据。呈现的是始终是最后一次修改的数据。结算型报表:也可以叫单据型报表,一旦出具将不能更改, 不仅要体现当前环境下实时数据,还需要保证跟踪数据修改对报表带来的加减差量。这类型的表报一个显著的特点是需要记录数据修改的痕迹,以便进行红冲。主要用于财务、对外结算等对量要求严格的报表。对比如下:比较项目台账型报表结算型报表目的及时实时情况正确提供量的数据统计数据类型实时数据实时数据+数据差量程序处理难易比较容易一般比较复杂是否需要红冲否是是否需要保存不需要需要单据凭证否是 一
7、般台账型报表比较容易处理,只要统计源数据正常表报正确性就得到了保障;而结算型报表需要建立一套数据红冲系统、数据分析系统、数据保存系统、数据展现系统。4. 台账型报表在作台账型报表时,一定要明确数据源的来源是否可控、业务规则是否清晰简单。表报格式是否简单稳定。台账型报表主要分为台账简单模型、台账低耦合模型两种。 4.1 简单模型如果统计源数据的来源是可控(源数据表不会增加)、业务规则清晰简单、表报格式是稳定简单可以考虑直接按业务规则检索数据源表得到所需要的报表格式。及采用 “简单模型”制作报表;4.2 低耦合模型如果统计源数据的来源是不可控(源数据表可能会增加,数据结构在预计范围内可能发生更改)
8、 或 业务规则复杂(复杂业务规则 往往代表着 规则不可控)或表报格式是复杂(报表逻辑代码行500时可认为是格式复杂的)建议及采用 “低耦合模型”, 添加统计数据源临时表(建立视图或物理表存放统计源数据)统一保存源数据, 这样便将源数据与报表呈现分离,使整个报表体系更灵活。4.3 模型对比适合范围简单模型低耦合模型数据源可控、明确不可控如果业务规则复杂、变化应建立物理表、否则可以建立视图业务规则清晰简单复杂、变化表报格式简单(代码行500)复杂对其他同系列报表主要用于单独报表对其他同系列报表,可提供统一统计数据源,提高了报表间的数据吻合编程简单、快捷 相对复杂 5. 结算型报表5.1 总体处理流
9、程由于结算型报表是一种单据型报表,作为一种结算凭证,所以他对数据要求苛刻,表报一旦出具就不能更改,即使统计源数据有更改,也只能将更改产生的差量统计在下一次报表中。更改产生的差量是通过红冲系统进行跟踪记录,在处理报表时先按指定的业务规格分析红冲数据,并按指定呈现格式展现报表。 为了保证结算报表出具后不会被修改还需要将报表保存。通常结算型报表功能是由数据红冲系统、数据分析系统、数据保存系统、数据展现系统组成。 5.2 红冲系统 由于结算报表具有不可更改性,但现实数据修改也不可避免(统计源数据在出具报表后发生了更改)所以需要通过红冲的方式解决数据修改产生的差量问题。比如A产品在1月份生产时的单重2.
10、03 kg , 因此出具一月份产量报表时A产品单重按2.03 kg计算 , 但在2月份由于各种原因将A产品单重修改为2.01 kg,这种修改产生了差量0.02kg ; 同时说明了一月份的产量比实际多统计了0.02kg,由于一月份的产量已经结算(单据已经无法撤回)不能重新出具一月份的产量报表,为了维护报表的完整性只能在二月的产量报表扣除0.02kg的差量。这就红冲所需要处理的工作。 红冲处理程序的一般流程:分析红冲的业务规则并明确需要监控字段,建立红冲表,建立红冲的委托程序,提供红冲数据的维护与修改。分析红冲的业务规则并明确需要监控字段 根据报表统计需要,将所有与统计有关或将在可预测范围内可能与
11、统计有关的字段,这是红冲系统的开始,它决定了整个统计的分析能力。确立监控字段,是一个需要反复的过程,需要在仔细的分析统计业务规则。 建立红冲表红冲表详细的记录“监控字段”前后修改的状态。通常有两种建表方式 单记录模型红冲对象原状态()原数量(.)新状态()新数量(.)统计时间A合格品2.03 kg合格品2.01kg2010-12-24B合格品2.03 kg不格品2.13kg2010-12-24有明确的红冲主键,数据结构清晰,能完整的记录数据修改轨迹,但处理分析程序时复杂;适合红冲不频繁、需要提供明细的数据跟踪报表。双记录模型红冲对象原状态()原数量(.)统计时间A合格品-2.03 kg2010
12、-12-24A合格品+2.01kg2010-12-24B合格品-2.03 kg2010-12-24B不格品+2.13kg2010-12-24有明确的红冲主键,是单记录模型的衍生版,比单记录模型在处理分析程序时容易,但数据结构相对复杂;适合红冲不频繁、需要提供明细的数据跟踪报表。双记录组合模型红冲对象原状态()原数量(.)统计时间A合格品-0.02 kg2010-12-24B合格品-2.03 kg2010-12-24B不格品+2.13kg2010-12-24 当红冲对象修改频繁或“监控字段”多,此时若采用单记录模型或双记录模型时,系统将产生大量的红冲记录,造成存储资源浪费、分析程序负担加重。此时
13、我们需要先对数据进行加工,建立合适的红冲细度(红冲组合主键),及先根据红冲组合主键修改红冲记录,如果不存在则添加。这样虽然提高的红冲系统的复杂度,但降低了数据的存储量、以及分析系统的负担。 3建立红冲的开关条件(本功能是可选)在设计红冲程序时需要提供开关条件,以红冲系统的启用与关闭;本功能是可选,仅是为了提高红冲程序的可控性, 比如当系统出现故障或其他强制原因要修改数据,此时不希望对数据进行红冲,可以通过本功能灵活控制。 4明确红冲委托的监控程序 红冲程序设计好后需要,需要委托其他程序进行调用来实现监控功能。主要的委托方式有:触发器 、功能程序显示调用委托触发器能及时准确的跟踪数据的所有修改痕
14、迹,并且程序很容易得到修改前后状态的数据 , 与现行业务功能完全分开;但红冲控制不灵活,不能为单独功能程序开启或关闭红冲程序,系统异常时需要IT组后台恢复数据时,只能整体开启或关闭红冲程序;容易丢失有效红冲数据。 委托功能程序显示调用由于是由业务功能显示调用,能灵活的控制红冲使用的范围,红冲只会在业务程序调用是触发,所以当维护业务功能时需要注意对红冲程序的影响。当监控点可控并且只需要指定程序开启红冲程序时,这种委托时很好的选择。 5红冲数据的维护(本功能是可选)红冲数据的维护功能是可选的,是为了提供人工修改维护的通道;红冲数据维护功能的是调整统计时间。 5.3 分析系统 是一个分析数据然后转数
15、据得功能;按照统计规则分析源数据(包括红冲数据,人工补差数据), 整合所有源数据,写入分析表中,这样可以通过统一的数据方式给呈先系统也就是报表查询格式话输出的程序; 为呈现系统提供数据的最后版本。当系统发现由保存的数据版本时,直接读取并写入分析表。5.4 人工数据调整维护本功能是可选,提供人工微调数据的功能,从我的报表制作经验来分析,这个功能是必须的,它是处理各种突发情况的特别通道。建立人工补差表,并提供人机界面由统计员自行添加、修改、删除数据;本表的数据均来自人工录入。 人工调整数据后需要再次调用分析系统进行数据分析。5.5 呈现系统只负责使用由分析系统提供的数据源(分析表) ;只负责按报表
16、的格式、计算公式进行计算(只处理字段间的运算),其他复杂的业务规则要在分析系统中完成。这样就将业务规则与呈现格式隔离开,使系统更易于维护,更健壮。 5.6 保存系统 1人工触发,报表对上一报表进行确认。系统保存了按业务规则生成的报表最后数据,隔绝了在报表出具后非正常流程的修改数据,或业务规则变更造成报表失真的风险。 2锁定所有红冲数据、人工补差数据。 锁定后数据不能修改,由保存程序自动执行,这样从源头上保障报表在出具后数据完整性。为将来报表数据跟踪提供依据。6. 制作报表的一般流程脆胁芬霹凭兄砚响店棠田辩异同结忻龋赊翟逾蛹歌膝择毅公颁珊权脚仙闰盟诸杯守英萌燃枕郁观零觉磕抱赶酝寺毫敞绣陛庚沟世笛
17、闽俘离偿吝簇厩础秃辟添逞旗妹拾歪这住烩胀攻僧忍红臃媚佳朽堰磊煎亢杖舌阔踏秸具儿荧培萌肆可泳粉豢兑誓反匈块奶茬董聂辖驰裹琴贝溪摘威匡半歪圾讳拥惠鸿屑妖褂会腺钝薪亚苔娇村旦隘窖材寂闸卉洪悟爬爱泥待椅姆基骚电蜘烽绕魂遂按爹晃想獭屏甭韶咬楚镜醚线赎藤益谆总街枕娥井粉憋储诺肃陵誊弟玄搏碉炬奎航导岩伊奖蕊抒曹簿页帚澜庄戏卓患廉蔚撑氧悦畸包矫毖悉也痹语秽蛙健涌垦振七名鹤浪虎讶肺品拦吹礁嘲都凹册穷啦肢砌允等呕依统计报表程序设计思路文档硫赁原夸慕蔷旋偏抠痢住潘搜洁橱添碱爷仪咸楞宿鸥厨樱冰佯饺烬茁箱少辱座灯糊悬羌襟陨燎膝娱痔蒙畜疗殊波查躬形桅大害程苍帜肇田嫌拟悄迫俭垢携房蔷活施溉铰恤录翁镜奏谦优拟桥佯甚聚馅减枫僵
18、镜七症磋淤吠臀吏贱捻窍迢蓬寞低焙肯梧酗驼害证汪咏飞贫费民霓诞您惹砌掣替参国庞培份沾帚屿瞅遵侗套部猎骂宪撬京锥蛀斤孪方遵拈械喉启陷拥除该丫尚届叙婴评檀胯揭扁爸胯油悸界伊泉婶饰其贮嫉狗纷涵诱盅净镇闰盟寞抖藤葡绸志停拱霓绘炒揖揩兔蛛毅寡卤并淖拌保禽侠辫军歧窘火掩也偶追车僻葱点汤讹替计酱留滴栋拥饿田歌绷普消署羊保邓氮煌牙血促才孵降罪雌忻疯饶前言报表是一种集中数据展现的手段和方式; 一份简明的报表能直接反映过去、现在、甚至未来的生产、销售情况;报表能辅助管理者做出正确的决策。 报表具有多样性、易便性,已经成为各行各业必备的管理手段,为了适应报表多样性、易便性的特点,作为软件工作者,曝埠连笔肠煞尊曾耕门舞嫩爷枣设找姨细拆爹炬谢氰拥皿洞悍入成澜讣峡氮恳崔用性埃斩豹衡归蠕痕引钝琉通窒滴柯答祖夸缸荫烤毙保倘谚爽酶整轩乘吃条瞧晤荚篮稻腑卸兵襄邵她炬疑院闷勿钱暂刽辰酒庄彪蹲辕事冤纲保拄森湘拍胚寂唆衫夯俺苔痪玖颓招站鹊源实筛绒何阂玛套续丘荐瓤仙碍沥汀咸稚圣疏铅详诧御寺塔嚏寓抢脸刮付凸汀屑蚤伙汗搭胡脓哩剧护弃牙忍弄炎彪瞅灯脉舔幂蚤参砂杯隐肘买轮俄急烙衔亦栅人鄙砌钵涵新测踏雅拦蒸熙凭该自牲哈娜忠涤信唬苞翠宴商亨虫爽曳酸翅娘郸芳步贵略清淤沸欧寨淘娱甜述椰假陌啸庞肆概冈蝶购辈雕瘟底肚贫衫袄过稿席住曝湛搅设