通用表格生成系统实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
通用表格生成系统实现

通用表格生成系统实现   摘要:介绍一种依托数据库技术,以表格定义和表格生成相分离为设计原则的通用表格生成系统,通过读取数据库中的表格定义,即可自动生成所需表格。   关键词:表格描述信息表;表格通用生成程序   中图分类号:TP311.52 文献标识码:A 文章编号:1007-9599 (2012) 17-0000-02   在许多软件的开发中,经常有生成各种各样表格的需求。为了实现这一需求,常用的方法是:先在电子表格软件(如EXCEL)中生成表格模板,然后在软件中针对每张表格编写一段程序,有几张表格,就编写几段程序,把需要的数据写入相应的表格模板,最终生成所需的表格。由于表格的绘制工作通过电子表格软件完成了,所以这种方法大大地减少了生成表格的工作量,加快了软件的开发进度。   如果软件所需要生成的表格比较少,用上述的方法没有什么大问题。但是,当所需要生成的表格比较多时,情况就有所不同了。由于软件中各表格的生成模式一般是相同的,但各表格的格式又各不相同,所以各表格的生成代码基本上是结构相同或相似,但是具体代码又各有相异。因此,编写第二张表格或更后面表格的生成代码时,为了减少工作量,通常的做法是把前面表格的生成代码拷贝过来,然后再加以修改;甚至可能是直接把以前所编写软件中的表格生成代码拷贝过来,加以修改后用于本软件的表格生成。这就产生了如下的一些问题:1.修改代码时容易漏掉需要修改的语句。2.如果做为母版的代码中存在错误,修改时凡是拷贝了这个母版的代码段都要加以修改。3.尽管各表格的生成代码类似甚至基本相同,但是每增加一张表格,该表格的生成代码仍然需要进行调试并可能需要加以修改,从而增加了工作量。   本文所介绍的通用表格生成系统正是为了试图解决上述问题而开发的。该系统的设计思想即:把表格的定义和表格的生成相分离。用专门的数据库来保存表格的定义。表格生成程序则从数据库中读取表格的定义,来生成相应的表格。由于所有表格都使用一个通用的程序来生成,所以代码只需要编写调试一次,修改纠错时,也只需要修改一次,因此减少了工作量。要增加新的表格时,则只需在数据库中添加表格定义即可, 从而避免了对代码的修改。   1 需求分析   要生成一个表格,通常需要知道如下的信息:1.表格的格式;2.要填入的数据从何而来?填入到表格的哪行哪列?3.数据填入前后,是否需要设置表格的样式(如:绘制表格线等)   上面所需知道的信息中,表格的格式是固定的,可以预先生成表格模板,其它信息则需要在数据库中描述。   2 数据库设计   本系统选择Microsoft SQLSERVER2000为数据后台(如果需要,也能很方便地改用其它数据库管理系统),并根据上述的需求分析,设计了本系统的数据库结构。   2.1 表格描述信息表设计   本表的每条记录描述一表格区域的信息,该区域可能是一个表格单元,也可能是一行或一列表格单元,还可能是多行或多列表格单元。所包含的字段为:记录号、模板文件名、数据来源、记录类型、行列表、列列表、最大行列表、跳转行列表、分割符、序号、标识符。各字段的含义见下。   记录号(ID):用于确定记录的读取顺序,不可为空,表格生成时,根据记录号从小到大读取记录。   模板文件名(MBn):表示当前表格区域所属的表格模板文件的名字,不可为空。   数据来源(SQLStr):表示当前表格区域中的数据从哪里获取,如果是从数据库中获取,本字段的内容为一SQL语句(如:select xj,, isnull(duty,) as duty from usertab where gh=$gh$,$gh$表示该处的值将在表格生成时用gh的实际值替换,之所以字段列表的分隔符使用“,,”,是因为程序中需要提取所要查询的字段,为了提取时不与可能用到的函数的参数列表的分隔符相混淆,所以用“,,”替代了“,”);如果是表格生成时直接指定的(如:表格生成日期、制表人等),则本字段为空。   记录类型(Type1):表示当前表格区域的范围(one、more或其它)。one表示单行或单列;more表示多行或多列;除了one、more以外的其它值(其格式如:$year$年)都代表当前表格区域为单个表格单元,且其值将在表格生成时用相应变量的实际值替换。   行列表(Rows1)、列列表(Cols1):这两个字段配对使用,表示当前表格区域首行或首列的行、列坐标。这两个字段以“jd,”或“xd,”起始,jd表示后面的坐标为绝对坐标,xd表示后面的坐标为相对坐标(即相对于上一个被填写的表格单元)。后跟坐标的格式为“x1,x2,x3,…”,其中的各项既可以是一个数字,也可以是诸如”n:m”、“n-m”的形式, “n:m”表示坐标为m个n;“n-m”表示共

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档