当前位置: 代码迷 >> VC/MFC >> 谋求报表类型的页面布局大概的解决思路
  详细解决方案

谋求报表类型的页面布局大概的解决思路

热度:140   发布时间:2016-05-02 03:35:56.0
寻求报表类型的页面布局大概的解决思路
注意:因问题复杂,为了描述清楚,写了很多,麻烦大家耐心看完,拜谢!

        目前准备开发一个GIS领域地质环境的数据库管理系统,实现数据的录入、导入、编辑、管理、浏览、查询和导出等功能。我刚参加工作没多久,经验不足,第一次承担此重任,但领导很重视这个项目,也信任我,给予我足够多的支持,因此特向各位朋友寻求一些帮助:不涉及细节的问题,只请大家说说我的观点和方案有没有方向性的错误,或者大家又有哪些更好的解决思路。该管理系统是一个桌面程序,使用SQL Server数据库。开发语言计划首选Qt,其次是VC++。我要开发的程序中的页面布局类似下图的效果,这是别人开发的同类型管理系统中的一个页面。标签对应的控件可以填充内容,如文字、数字、图片等等。


        这个“泉点野外调查表”在各位看来是不是很像一个报表?类似以下的excel表格。


        我要开发的程序中,类似这样的调查表有300~400个,每个表上的各种类型的控件都有很多,我第一个遇到的问题就是页面的布局!如果完全用在IDE中拖控件的方式进行页面布局,效率太低了,做出来也不美观。我数过了,别人开发的管理系统中也有150个左右这样的表。我认为这些表的布局都是用“报表开发工具”之类的程序设计出来的,于是我查找了报表这一类的资料后,从程序员的角度出发,综合自己的理解,得出以下的观点。


        这里的报表布局文件类似于Qt中的.ui或者vc++中的.rc资源文件,专门用于描述一个页面上所有控件的布局信息,然后在可执行文件内支持库根据原先的约定进行布局解析,把每一个控件按照原始的设计位置和尺寸给还原出来,这样当初设计是什么效果就能还原得到什么效果。

        请大家说说,这个观点是否正确?特别是那些做过类似报表开发的朋友。另外我用spy++探测过“泉点野外调查表”中的控件,发现都是由一个叫做Ehlib的组件设计生成的,它是Delphi平台上第三方的开发组件,专门用于设计各种表格、报表的。

        我查过资料了,像报表之类的开发需求一直都存在,无论是基于C/S架构还是B/S架构,所以我认为在软件行业内针对不同平台的“报表开发工具”一定存在有很多。

        如果我上面的观点大体上是正确的,那么我这300~400个表的页面布局也肯定可以用合适的“报表开发工具”来设计生成,我第二个遇到的问题就是有针对Qt平台的“报表开发工具”吗?如果没有的话,有VC++平台上的吗?我比较熟悉VC++,使用时间5年左右,曾编写过不少作品,但领导说从项目的长期维护角度考虑,以及现在Qt开发很热门,此次开发优先选择Qt平台。

        所以如果大家知道有对应的工具存在,无论是开源的、还是免费的、或者是付费的,都可以告诉给我。

        以前我遇到过太多编程上的问题,习惯于单兵作战,但限于能力,耗费了好多代价才能解决。现在第一次独立负责一个项目,在我看来还是工作量很大的项目,我不得不寻求一切可以寻求的帮助,少走弯路,争取把事情办好。尤其是一开始,就绝不能犯方向性的错误,南辕北辙的教训一直都是很残酷的。

        预想的步骤是先寻找合适的“报表开发工具”,设计一个表的页面布局出来,然后用Qt或VC++实现在窗口上展示布局。最起码先做一个样板出来,证明方案的可行性,至于其他的功能需求,留待一步步实现。

        或者说,我完全抛开“报表开发工具”之类的想法,寻找其他的技术方案去实现“泉点野外调查表”的页面布局,可以做到吗?用HTML+CSS?

        其实仔细想一想,如果我的观点正确并且能够解决本问题的话,自己要做的事情还真多:要学习设计器的使用,要设计表的布局,要学习“报表开发工具”提供的API的使用,要从头开始学习Qt编程(好在有VC++功底,听说能省些学习成本),还有SQL Server数据库的设计以及实现管理系统各个功能的实际编码开发,另外就是对其他人的任务分配(还好领导给我分配了两个人协助),整个项目的进度控制与质量控制也都要着手处理。

        也许有些朋友会认为这个任务对这样条件的我来说真的很重,其实我也大概明白这个任务的分量到底是怎么样的,我只是想拼尽全力的去尝试一番。因为我没有任何后路可退。

PS
        之前在搜索“报表”时,找到的多数是用于展示已有数据的报表以及相关解决方案,但我这里肯定涉及到数据录入的步骤。在http://www.finereporthelp.com/help/5/0.html页面上找到的资料,让我知道自己要实现的报表类型是什么了:

        1.填报报表概念
        传统意义上的报表,我们称为普通报表,是解决数据呈现的问题,即把数据从数据库中取出来,然后以各种格式展现出来,对展示的结果可以进行导出、打印等。

        CRM、ERP、OA等基础信息化系统中都会包含一些页面,提供给业务人员或者用户对数据库进行增加、修改、删除等操作。这样的页面我们就叫做填报报表。

        填报表与普通表的区别是能否录入数据,普通报表只能浏览、汇总数据不能录入数据,而填报表不仅可以浏览数据,还能录入数据。

        2.填报表制作流程

------解决思路----------------------
我做过报表的程序,你的思路是对的,应为报表种类繁多,针对每种报表,由于页面大小和控件位置都是不一样的,所以每张报表都会有一个配置文件,配置文件里面记录了报表图片的信息和实际打印纸张的信息,当然最终要的,记录了当前报表图片里面每个控件的信息,当你需要加载报表的时候,就要读取相应的配置文件,通常是xml,然后根据xml里面的控件描述,在报表图片对应位置动态生成控件,最后用户会直接在报表的控件上填写信息,然后再打印出来,一切都是实时的,而报表配置文件通常是通过一个报表设计器来生成的,最终就是生成一个xml文件记录控件等信息,设计器需要你单独开发,遇到新报表时,你先扫描出报表图片,导入设计器,然后实时的拖控件,最后再根据控件在图片上的位置导出xml

说这么多,不知道是否中你下怀?
我做的东西是这样的,感觉和你的东西差不多:


------解决思路----------------------
因为你的配置文件最终要在exe加载的,不要css+html了,解析很麻烦,毕竟不是用于展现的目的,Qt这个框架就做UI好做,但目前就你的工程来看,并不涉及到什么UI重绘的东西,用Qt实在没这个必要,vc和Qt现成的报表什么的我不清楚,反正报表编辑器的开发量还是很大的
------解决思路----------------------
引用:
Quote: 引用:

因为你的配置文件最终要在exe加载的,不要css+html了,解析很麻烦,毕竟不是用于展现的目的,Qt这个框架就做UI好做,但目前就你的工程来看,并不涉及到什么UI重绘的东西,用Qt实在没这个必要,vc和Qt现成的报表什么的我不清楚,反正报表编辑器的开发量还是很大的

1、大家要开发的东西,最终要做成的布局形式是差不多;

2、你是有现成的图片作为底层参照物,在上面对应位置放置控件就方便很多,可以说是一目了然。而我的只能先大致的拖放好每个控件,再一一调整,同时300~400个表也是个很大的工程;

3、“设计器需要你单独开发”?这个我没有任何思路,因为之前我是凭程序员的直觉还有以往编程积累的经验想到上面那个“报表开发工具”的观点的,我的本意是寻找别人开发好的合适的报表开发工具,省些时间。况且你也提到了“报表编辑器的开发量还是很大的”;

4、如果真像你说的设计器需要单独开发,那还得自己写一个配套的解析引擎,还不知任务量大不大;

5、这个“表单编辑器”是你写的?方便的话能否给我一份拷贝以供参考?

6、你做的东西,是否完成了?可否上图显示布局效果?

7、当初你有没有想过寻找第三方的报表开发工具来开发自己的东西?

8、另外,如果你或者你身边的朋友知道有现成的适合我需求的这个工具存在,请告诉我。

9、至于用Qt还是VC来写,要看找到的报表开发工具支持哪个开发平台。说不定,到最后,这两个平台的都没有,但对应Delphi或者C#的就有,在没有选择的情况下,就得考虑用Delphi或者C#来做了。

不用什么解析引擎,就是xml,解析器很多,我用的tinyxml
编辑器是自主开发的,插件什么的我也不知道有什么现成的
这个东西是完成了的,最终导出的是一个zip压缩文件,用作生成网页,用户填写了之后是可以直接在对应单据上打印的
这个东西属于公司的东西,我也不敢私自拷给你
现成的东西不总是那么多的,都是要投入人力财力去开发的
------解决思路----------------------
编辑器就是生成一个xml,里面记录你拖进去的控件的位置等信息,无论用于网页生成控件还是客户端生成控件,都是去解析xml拿出坐标信息而已,这个没什么区别,编辑器的编写并不难,只是需要配合客户端来编写,制定好协议,xml应该怎样的格式,编辑器按协议格式生成,客户端按协议格式解析xml生成控件,当然你也可以不写编辑器,那么每张表单,你要手动去量每个控件的位置,再手写配置文件给客户端解析,你这样工作量很大,没有编辑器方便
------解决思路----------------------
引用:
Quote: 引用:

编辑器就是生成一个xml,里面记录你拖进去的控件的位置等信息,无论用于网页生成控件还是客户端生成控件,都是去解析xml拿出坐标信息而已,这个没什么区别,编辑器的编写并不难,只是需要配合客户端来编写,制定好协议,xml应该怎样的格式,编辑器按协议格式生成,客户端按协议格式解析xml生成控件,当然你也可以不写编辑器,那么每张表单,你要手动去量每个控件的位置,再手写配置文件给客户端解析,你这样工作量很大,没有编辑器方便

我想你几乎都理解我的观点以及面临的处境了吧。即使没有帮到我很多,但有思想上共鸣都是好事情。

另外好羡慕你有现成的工具可以使用,我再顶顶贴,好让有缘人看到。

工具全是我一个人开发的
  相关解决方案