南京袁永福 报表软件 C#.NET ASP.NET

南京PX(对二甲苯)项目,这是个问题。
三位一体的电子表单工具,同时支持WinForm表单,HTML表单和XSLT表单,表单模板在B/S和C/S下具有相同的用户体验. ---- C#.NET新型报表工具,支持WinForm和ASP.NET,WEB报表工具.
袁永福 江西九江人 2001年东南大学动力系毕业 电子邮箱:yyf9989@hotmail.com QQ群:41118220

说说报表续打

      所谓续打就是同一个报表,在已经打印完毕后,由于数据的增加,将已经打印的纸张(旧纸)再放入打印机,然后从上一次打印的位置开始接着打印新增的数据。

     续打比较适合日志性质的报表打印,比如医院信息系统中的病程记录打印。病程记录是比较重要的病历文书,需要医生定时书写,并签名表示确认,而目前电子签名还不现实,因此计算机里面的文档是不能手动签名的,需要打印出来在手工签名。一天或几天打印一次,则一个完整的病程记录文档需要打印多次。很显然单个的病程记录不大可能正好占据一页,若硬要一次打印从新的一页开始则浪费纸张而且格式不符合要求。因此就需要降上一次打印的已经有内容的最后一页(旧纸)放在新纸的上面然后进行打印,对于续打线由于上次打印已经打印的页眉页脚,因此续打时不应打印页眉页脚。

     如果只是简单的从指定页开始打印来实现续打,则新打印的内容会和已经打印的内容相重复。此时因为打印机瞬时硬件状态和操作员的对齐精度的问题,新打印的内容不会和旧内容完全重合,则此时打印效果可能如图所示非常糟糕难看。

    对于续打,可以在打印的时候将打印的最后一个记录的定位信息保存到数据库中,下次打印时就可以自动的从上次打印的位置继续打印了。我估计银行信息系统中打印存折就可能采用这种模式。但如此以来,程序将不得不为支持续打而增加不少内容,需要新增数据库结构,需要新增程序来控制续打,而且报表模板也可能需要作特定设置,如果进行一次续打后操作员觉得效果不好想要重新打印则程序又得为此修改数据库。若信息系统中存在不少续打的应用,则程序的开发和维护都比较困难。

   从上面的分析,我们可以知道续打必须有操作员的辅助,操作员需要找到要续打的旧纸并按照正确的方向放在打印机纸盒的最上面,操作员为了续打要手动的做不少工作。因此干脆在续打前让操作员再辛苦一下指定续打位置也未尝不可,如此开发人员不必为了支持续打而劳累,一切交于支持续打的打印工具和操作员。操作员由于亲自指定续打位置而更注意使用,使用更自由,而且这个工作量不算大。

   操作员自己定义续打位置,可以使用鼠标点击打印预览视图中的某个位置,然后在点击出绘制一个横线表示续打位置,打印机就从续打线处开始打印。续打线上面的部分不打印但占地方,而且续打页不可以打印页眉和页脚。这里又有一个续打线是否合理的问题,续打线应当在打印页面上某个空隙中,而不能横跨一行文本或图片,报表中可能某些区域不能放置续打线。操作员可能眼神不好或者鼠标不灵活,有可能难于做到这点,这就需要报表工具对用户确定的续打线位置进行修正,以确保续打位置合情合理。

   实现续打方法可能有很多种,本人自己写的报表工具实现续打的的基本过程为,当操作员在打印预览控件中按下鼠标,则程序获得鼠标位置,作为续打线的位置,然后将其转换为在文档视图中的位置,然后进行修正,确定续打线的最终位置,而在打印预览控件也在续打线的位置上绘制一条横线。当打印文档时,则续打线以上的文档内容不进行打印,而从续打线的位置开始打印文档。而且打印的第一页文档不打印页面和页脚。

posted on 2006-08-29 08:49 袁永福 阅读(2457) 评论(12)  编辑 收藏 网摘

评论

#1楼  2006-08-29 09:22 xuanfeng      

有没有实现的代码,或者实例啊   回复  引用  查看    

#2楼  2006-08-29 09:25 faqi [未注册用户]

把上次打印的位置记录下来,比如存折打印,每个帐户都有一个记录打印位置的字段,下次打印时根据此位置来确定在何处打印   回复  引用    

#3楼  2006-08-29 10:07 byrybye [未注册用户]

那个 应该是套打吧 ,就是制定好格式的打印,比如存折那种。   回复  引用    

#4楼 [楼主] 2006-08-29 10:46 新型报表工具 xdesigner      

@xuanfeng
实例就看我自己做的报表工具,去 http://www.xdesigner.cn/xreport/default.htm 下载。   回复  引用  查看    

#5楼  2006-08-29 14:03 stenver [未注册用户]

楼主的报表是不是需要另外指定数据源?
就是说略过原来的业务系统的一切结构,直接连接数据库折腾?
那样做出来的报表不是扯蛋么,没有权限和业务逻辑控制,就算给客户自定义面对也是一堆杂乱的数据库字段.有意义么?
换句话就是,前面开发了半天的业务代码,到了做报表又重新来过.完全回到解放前.这样是不是太没有效率和浪费时间啊.   回复  引用    

#6楼 [楼主] 2006-08-29 14:43 新型报表工具 xdesigner      

@stenver
我没说过报表工具是客户使用,而是偏重于系统实施人员使用,程序员也可用。本报表工具目标是尽量避免编程,因此功能上不能面面俱到。   回复  引用  查看    

#7楼  2006-08-30 00:35 stenver [未注册用户]

不是我拍砖,请你自已仔细想想,你做的这个有实际用处么?不要想当然,想清楚再回复。当然,如果从来没有参加一个软件项目的,那种另当别论了,   回复  引用    

#8楼  2006-08-31 17:18 sunrise[匿名] [未注册用户]

老实说,似乎没有多大用此。如那些日志之类的,你可以没周打印一此不久可以了。可以用时间来过滤,你现在用这个方法如果我打印出来的纸不小心倒了杯茶在上面需要重新打印过,那怎么办呢。   回复  引用    

#9楼 [楼主] 2006-09-08 10:19 新型报表工具 xdesigner      

各位老大,如果你有亲朋好友在医院工作,你就可以打听一下病程记录该如何打印.   回复  引用  查看    

#10楼  2006-09-22 09:45 拉力机 [未注册用户]

不看好这个@_@~~   回复  引用    

#11楼  2007-01-14 16:27 zxc[匿名] [未注册用户]

@新型报表工具 xdesigner
正想找呢,能赐教吗   回复  引用    

#12楼  2007-07-27 11:41 xwrj [未注册用户]

不过我觉得还是应该存到数据库里比较好,代码实现也不是很复杂,现在我用pb已经实现,就是自动换行和文本对齐没有解决好   回复  引用    





标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》

相关文章:

相关链接: