
介绍一种荩十插件技术、辅之以多模板技术和动态生成技术的动态报表设计方法,并可实现与MIS无缝衔接。从而使MIS开发的高效性、灵活性、可扩展性以及报表设计过程的简易性和智能化程度均有明显改善和提高。
针对传统MIS系统开发过程中报表设计繁琐、低效等弊端,提出了一种全新的报表设计思想,就是以插件技术为主,以多模板技术为辅,结合报表动态生成技术,来实现对报表的动态制作。对于企事业单位的数据库中的任何数据,可以利用本插件直接进行报表的设计并实现报表数据的输出,当然也可以通过该插件生成报表模板并与用户的MIS系统实现无缝的衔接。所以本插件既可以独立于MIS系统单独使用,也可以作为报表制作工具辅助软件开发人员进行报表程序的设计,以提高软件开发的效率。该插件对于遗产软件进行报表功能扩充能发挥其独到的作用。
l设计思想
这种新的报表设计综合了多种动态设计思想,充分体现了报表没计中的灵活性和动态性,使报表的没计思想有了新的发展,从而大大加快了MIS系统的开发速度。
(1)插件技术为主很多的著名应用软件都采用了这项技术,如AdobePhotoshop、MacromediaDreamweaver等,它们都是利用这项技术来提高系统的灵活性和可扩展性。
(2)多模板技术为辅多模板技术也是现代应用软件的一贯技巧,它的出现是为了满足用户不同的心理、兴趣以及不同的需求变化。用户可以根据自己的需要来选择自己喜欢的模板,这样就再一次扩展了系统的功能。
(3)结合动态生成技术动态生成技术即“所见即所得”技术,它能够给用户带来更多的直观性,简化了用户的操作,使用户可以在不需要进行任何培训的情况下,只需要用自己的主观逻辑去操作软件,就可以得到用户所需要的结果,这项技术不但给用户带来了方便,而且为程序员开发报表的时候,减少了工作量,缩短了开发时间,提高了工作效率。
2技术实现
现以基于组件技术、面向对象编程、可视化、有强大的数据库支持的灵活快速开发软件。以Delphi为例,具体介绍一下插件技术、多模板技术以及报表的动态生成等技术在实际软件开发过程中的应用。
2.1系统结构设计
根据模块划分原则,本插件功能如下所示:
(1)设置数据源:完成数据源设置工作;
(2)报表模板设计:模板设计又分为直接设计和根据设计向导设计,考虑到数据源的问题,设计时又分单表模板没计和多表关联模板设计;
(3)显示报表列表:显示报表信息。
2.2主要技术的实现
(1)插件调用示意图(见图1)
首先将报表单元文件通过编译,生成相应的插件文件,然后在开发应用系统的时候预留一个特殊的接口,就可以利用这个接口来调用插件文件。
(2)具体实现
插件是以特定的接口与父应用程序交互,这个接口可以根据应用的需要来定义。报表文件制作成相应的插件文件。应用程序在运行时就会自动检测插件目录,并将检测到的报表插件文件显示在插件列表中。如果没有插件,它就不会出现在已安装的插件列表中。插件通过LoadPlugin过程载入到这个应用程序中,这个过程在显示报表列表窗I:1的FormCreate事件中调用。该过程使Find—First和FindNext函数在应用程序所在目录中查找插件文件。每找到一个文件以后,就使用函数LoadPlugin过程将其载入。
LoadPlugin过程的部分函数代码如下:
procedureLoadPlugin(sr:TSearchRec);
type
TPluginlnit=procedure(ParentIist:Tlistbox);
stdcall;
Var
LibHandle:Integer;
InitProc:TPluginInit;
begin
LibHandle:=LoadL.brary(Pchar(’plug/’+srName));
irLibHandle<>0then
begin
@InitProc:=GetProcAddress(L.bHandle,InitPlugin’):
irAssigned(InjtProc)then
begin
ListBox2.Items.Addfsr.Name);
initproc(1istbox1);
end
else
begin
MessageDlg(’文件”’+sr.Name+…不是一个合法的插件’,
mtlnformation,[mbOK],0):
end;
end
else
MessageDlg(’导入插件…+sr.Name+”’时发生严重错误!’,
mtError,[mbOK],0):
end;
LoadPlugin方法展示了插件机制的核心。首先,插件被写成DLL。其次,通过LoadLibraryAPI被动态地加载。一旦DLL被加载,就需要一个访问它所包含的过程和函数的路径。API调用GetProcAddress提供这种机制,它返回一个指向所需例程的指针。在这个简单的演示中,插件仅仅包含一个名为InitPlugin的过程,如果在DLL中没有找到请求的例程,GetProcAddress将返回n|l,这样就允许使用Assigned函数测定返回值。
为了以一种易用的方式存储指向一个函数的指针,有必要为用到的变量创建一个特定的类型。注意,GetProcAddress的返回值被存储在一个变量中,initproc属于TPluginInit类型。下面是它的声明:
type
TPluginInit=pro'cedure(Parentlist:Tlistbox);
stdcall;
由于过程存在于DLL内部,它通过标准调用、转换,编译所有导出例程,因此需要使用stdcall指示字。这个过程使用一个var参数,当过程返回的时候它包含插件的描述。
要调用刚刚获得的过程,只需要使用保存地址的变量作为过程名,后面跟上任何参数。就本文的例子而言,声明:initproc(1istbox1);将会调用在插件中获得的相应过程,并且初始化报表列表框Listbox1。
2.3构造报表插件
插件文件是一个标准的DelphiDLL,DLL文件不仅可以让Delphi自身调用,而且也可以在Vc++、VB等其它语言程序中轻松调用。虽然插件是一个DLL文件,但是不一定要给它一个.DLL的扩展名。实际上,一个原因就足以让我们有理由改变扩展名,当父应用程序寻找要加载的文件时,新的扩展名可以作为特定的文件掩膜。通过使用别的扩展名(如trio)可以在一定程度上确信应用程序只会载入相应的文件。
例子插件的代码是比较简单的。部分关键程序代码在下面已经列出。此处InitPlugin原型与外壳应用程序中的TInitPlugin类型应一致,使用附加的export保留字指定该过程将被导出。被导出的过程名称也将会出现在主工程源代码的exports段中。
unitUsjxstbj;
jnterface
procedureInjtPlugjn(Parentljst:Tlistbox);stdcall:
1mplementatiOn
procedureInitPlugin(Parentlist:Tlistbox);
begin
Parentlist.Items.Addfbbname):
end;
在测试这个插件之前,要先把它复制到相应的路径下(如plug)。最简单的办法就是在主目录的子目录下创建插件,然后把输出路径设置为主路径。
多模板技术也是动态设计中必不可少的一项技术,模板技术的实现,用户可以根据自己的需求进行取舍,扩大了用户的选择余地,不仅如此,这项技术还大大地增强了应用软件的通用性,以满足不断发展的需求。
本文所要介绍的多模板技术,是指在同一张报表中,使其具备多个样式模板,即用户可以按自己的需要设置报表的字段,并保存为.rep文件,并在相应的ini文件中写入信息。本系统的模板技术的实现主要分为两个部分——设计并保存板和调用模板(见图2)。
3报表动态生成技术的实现
报表动态生成技术是“所见即所得”技术的真实体现,是指报表数据已经准备完毕后,无须手动地去设计报表的排版。一切都是由相应的报表程序自动的按照需要生成报表模板,即将DBGrid中的数据集合直接映射为报表文件,并直接预览。真正做到了所见即所得,使用户界面更加直观,用程序来控制报表排版,更能准确地进行定位,使打印出的报表更加实用、美观。这样既大大节省了报表的设计时间,也提高了应用程序的易操作性。
(1)数据组织
数据组织层通过ADOQuery来向报表实现层传递打印数据。同时也通过ADOQuery向格式定义层的DBGrid和Excel对象传递数据。为了实现报表打印的通用性和灵活性,在此提供一种数据的动态组织方案。该方法能灵活实现动态选择打印列、调整打印列顺序、加载数据(包括空列)到DBGrid中等功能。设计一个DataArrange类:
type
TDataArrange=class
private
procedureMoveUp(CLB—Field:TFlatcheckListBox);,,记录上移
procedureMoveDown(CLB—Field:TFlatCheckListBox);
//记录下移
procedureCheckAll(CLB—Field:TFlatCheckListBox)
//选中所有选项
procedureAddData(CLB—Field:TFlatCheckListBox;
//向DBGrid加载数据
DBGrid1-TDBGrid;ADOQuery1:TADOQuery);
end;
其中AddData方法的实现函数如下f0ri:=0tOCLB—Field.Items.Count-1do
begin
ifCLB
——
FieldChecked[i]then
begin
DBGrid1.Columns.Add;
DBGrid1Co1umns【AddCount】.FieldName:=CLB—Field.hems[i];
end;
end;
该方法的好处是:因为用户对于报表数据的要求时有变化,程序员用ADOQuery组织的数据相对固定;所以需要提供比较灵活的用户接El。DataArrange正符合这种要求,既可以让用户自由选择打印数据字段,又可以自由调整打印先后顺序,此外还可以添加空数据列。
(2)格式定义
根据DBGrid中的列数、列宽、列标题、表格数据等信息,在报表实现层中运用TReport、TQRShape、TQRDBtext、TQRLabel等类的Create方法,动态地构造报表初步模型H】。鉴于单个报表的特殊性,可以设立不同的参数来描述不同的报表格式,从而实现普遍性与特殊性的完美结合。同时可以设计一个格式控制面板来设定这些参数,使用报据友好的操作界面实现各个表单的特殊需求,同时可以保存每次设定的格式以便重用。控制面板中具体的参数列表说明如下:
(3)报表实现
通过数据组织层和格式定义层的工作,决定一张报表的数据和格式元素都已经确定,剩下的就是如何有效利用这些元素动态实现报表的功能。可以运用TReport、TQRShape、TQRDB-text、TQRLabel等类的Create方法,构造DBGrideRepon(DBGrid:TDBGrid;INIFileName:string)函数,动态创建报表打印组件,然后根据格式定义参数信息,来设定相关组件的格式属性参数,从而最终成功地创建所需报表。具体步骤如下:
1)根据保存报表格式定义参数的文件名INIFileName,从INI文件中读入报表格式定义参数;
2)创建QuickRepl并定义纸张类型以及纸张方向,并对数据库进行绑定;
3)根据DBGrid中的列名、数据列、列宽等信息,创建报表列标题和数据列;
4)使用TQRShape.Create(F_ReportSet_NOini)分别创建表格顶部线条、列标题与数据列问的分隔线、数据列之间的分隔线,和表格底部线条,并设置其相关属性;5)使用TQRLabe1.Create(F_ReportSet_NOini)分别创建报表主标题、副标题、页码标题、时间标题,同时设置其相关属性。
4结束语
MIS系统的报表的制作是一项较为复杂的工作,拥有一项较为先进、快速的报表制作技术,能大大地减少工作量,提高MIS系统的开发速度,使其能够做到质量与速度的并进。本设计思想的提出,还在一定程度上解决了因报表的增加而要重新编译整个应用系统的问题,使整个报表的制作趋于简易化、动态化、自动化。
当代大学生就业主要是通过就业市场来实现,然而大学生就业市场并不是一开始就有的,而是随着市场经济改革的发展逐步建立起来的。大学生就业市场作为社会主义大市场的一部分,其运行遵循市场经济一般规律,同时也具有与其他劳动力市场不同的特点。 论文关键词:大学生就业市场 广义上的(就业市场)己称劳动力市场,它通过市场主体的积极参与,市场组织者的有序管理,政府的宏观调控,承载着对全社会劳动力资源进行有效配置的...
命题如同作文的定题和作文的修改一样重要。语文教师如果不在命题上下番功夫,那就是不懂得文章的写作,也就很难把作文教学搞好。在给学生命题时,主要应注意作文的题目要含有生活价值,切合学生的思想和生活,结合学生的阅读实际。 少数民族地区的语文教师即使从事了多年的作文教学,往往没有体会到作文的命题难。这是因为他们觉得作文命题并不需要特别费心思,就可灵机一动,信手拈来。然而,在实际的作文教学中,命题不那么容...
随着我国改革开放的不断深入,特别是加入世贸组织后,我国与世界各国在政治、经济、文化等方面的交流越来越多,英语作为世界通用语,已被国家教育部列为初、高等教育的必修课,为培养具有国际竞争力的人才,英语教育从幼儿抓起已是大势所趋。与此同时,幼儿英语教学越来越受到重视。本文通过对进行幼儿英语教学的必要性和可行性、幼儿英语教学的目标、幼儿英语教学的内容、英语教学的实施、进行幼儿英语教学的意义、幼儿英语教学中...
建构主义学习理论和多元智力理论对高中化学教学具有重要的指导意义。以学生为中心通过探究性教学促进学生主动参与思考和实践来全面提高学生素质,使学生领悟科学、技术、社会三者紧密关系。化学教学过程和评价机制上的不断进步更好地实现以人为本的教育理念。 一、引言 建构主义学习理论强调以学生为中心,要求学生由外部刺激的被动接受者和知识的灌输对象转变为信息加工的主体、知识意义的主动建构者。建构主义理论要求教师...
公路客运在与铁路客运进行激烈竞争中处于不利的局面,铁路客运给公路客运 带来全方位、深层次的冲击。面对这一形势,公路客运必须对自己的战略重新定位,找准适合自己并能发挥自己优势的目标市场。同时更为重要的是,公路客运要通过并购做强做大,取得规模效应。对目前的态势进行了分析,得出了公路客运并购的必然性,然后从公路客运自身的问题研究出发,结合公路客运的特点,指出横向并购应是公路客运并购选择的主要模式,并对...
当前很多院校都开设了有关网络信息安全的课程,然而由于部分院校还没有来得及建立相关的专业实验室,而正常的教学工作用机又不允许安装实验演示需要的环境和软件,只能进行单纯的理论教学,因此很难激发学生的学习兴趣,学习效果也达不到预期目标。笔者经过一段时间的摸索,通过采用虚拟机技术,在一台实体的计算机上,安装任意台的虚拟机,模拟真实网络服务环境,解决了网络信息安全教学备课、教学演示中对于特殊网络环境的要求问...
在我国飞速发展的时代,在物质文明昌而盛之的同时,我们必须正视一个事关重大的问题—社会公德的培养和教育的问题。本文由一些缺失公德的焦点事件开始,论述社会公德的重要性,最后对社会公德的培养和教育提出建设性的意见。近年来,随着我国经济的迅速发展,精神文明建设的不断加强以及社会整体教育水平的普遍提高,广大公民的道德修养也有了很大进步,但一些与社会整体文明进步趋势相悖的现象还存在着,冷漠歧视、破...
河50区块是胜利油田产能建设的重点开发项目。该区块地质情况复杂,且由于施工井是老区调整井,存在地面环境受限、油水关系复杂、是典型的老油田区块。并且经过三十多年开采,已全面进入高含水期,严重制约着油田和采油厂上产大局。地下压力系统遭到破坏,给固井工程提出了严峻的挑战。常规的固井技术不能满足该地区的固井要求。为此,针对该地区大位移、小半径绕障定向井的地质结构特点,开发优化了低密度膨胀水泥浆体系,并结合...
针对目前高职高专外语专业教学中普遍存在的外语语言教学与职业技能培养之间的矛盾日益突出等问题,本文作者以外贸英语专业《外贸制单》课程的教学为例,在改革教学模式、强化技能培训等方面进行了一些有益的探讨。 随着中国的对外贸易日渐融人全球化的进程,各类进出口企业数量激增.社会对外经贸人才的需求量也随之激增。因此,培养一批既有一定的外语语言基础.又懂外贸专业知识,并具备熟练操作技能的专业人才,已成为高职教...
建构主义(consauctivism)学习理论与传统的教学模式截然不同,其核心是以学生为中心,强调学生对知识的主动探索、主动发现和对所学知识意义的主动建构。本文探讨了大学微生物教学在建构主义学习理论的指导下,在理论教学、实验教学、教学方式等方面所作的一些变革和完善。 一、引言受传统大学微生物教学方法的影响,本文发现在大学微生物教学中存在两个比较普遍的现象。现象一:学生习惯听老师讲解和花大部分时间...
影响因子:50.717
影响因子:3.651
影响因子:0.000
影响因子:1.940
影响因子:0.553
影响因子:0.000
影响因子:1.990
影响因子:0.000