您的当前位置:首页一种简单的组态王报表功能实现方法

一种简单的组态王报表功能实现方法

来源:小侦探旅游网
一种简单的组态王报表功能实现方法 2010年04月24日 星期六 15:18

前段时间用组态王6.53做了一个小的画面组态,其中用到了KVADODBGrid控件来做报表,现总结如下。

一、准备工作

第一步:在组态王工程管理器中新建一个项目,项目路径为D:\\实验项目。 第二步:新建一个ACCESS数据库

1、在“D:\\实验项目”路径下新建一个 Microsoft Office Access 应用程序并命名为mydatabase.mdb;

2、打开“控制面板\\管理工具\\ODBC数据源管理器”选择“系统DSN”选项; 3、点击“添加”按钮创建新数据源,选择“Microsoft Access Driver(*.mdb)”;

4、在数据源名处填下“mydata”,并选择数据库路径为“D:\\实验项目\\mydatabase.mdb”。 第三步:创建表格模板

点击工程浏览器左侧的“SQL访问管理器”下的“表格模板”,新建一个表格并命名为Table。在Table中添加所需记录的变量及日期参数,其中“日期”为定长字符串型,字符长度为10;其它诸如年、月、日、时、分则为浮点型,字符长度为1。 第四步:创建记录体

点击工程浏览器左侧的“SQL访问管理器”下的“记录体”,新建一个表格并命名为Record,在Record中添加所需记录的变量及日期参数。记录体用来定义Access数据表格字段与组态王变量之间的对应关系。

二、连接数据库

第一步:在工程浏览器左侧的“数据库”下的“数据字典”中定义一个内存整型变量,并命名为ConnectID。

第二步:创立组态王与mydata数据源的连接,并以“表格模板”Table的格式在数据库中建立名为“TheDate”的表格,命令如下:

SQLConnect( ConnectID, \"dsn=mydata;uid=;pwd=\"); SQLCreateTable(ConnectID, \"TheDate\", \"Table\" );

将上面两条命令填入“工程浏览器\\命令语言\\应用程序命令语言”下的“启动时”选项中。

第三步:在工程浏览器左侧的“命令语言\\事件命令语言”下新建一事件命令,在“事由描述”项内填下“\\\\本站点\\$分==01”(每小时事件发生一次),在“发生时”框内填写

SQLInsert(connectionid, \"TheDate\", \"Record\");//每小时向数据库保存一条记录。

三:建立报表查询画面

新建一个画面,并在画面上添加一个日期控件作日期查询用;添加一个KVADODBGrid控件作报表显示用;添加三个按钮分别作查询、打印、退出用。

第一步:添加KVADODBGrid控制

1.菜单栏\\编辑\\插入通用控件\\KVADODBGrid Class,双击添加的控件,并命名“控件名”为dayreport

2.在控件属性里的“数据源”选择前面定义的mydata、“表名称”选择TheDate,此时下面的“有郊字段”将出现你在记录体里面加入的数据,根据需

要添加到右侧,并编辑好“标题”、“格式”等内容

3.根据需要可修改控件属性里面的“字体”、“打印设置”等 第二步:添加时间控件

1.菜单栏\\编辑\\插入通用控件\\Microsoft Date and Time Picker Control 6.0(SP4)

2.双击添加的控件,并命名“控件名”为DayreportSelect 3.根据需要可修改控件属性 第三步:添加查询按钮

1.定义按钮的“命令语言连接”“按下时”为: dayreport.RemoveAllData();

2.定义按钮的“命令语言连接”“弹起时”为:(下列语言中“条件句”为内存字符串格式,在“数据词典”里面定义)

long a; long b; string str1; string str2;

a=DayreportSelect.Month; b=DayreportSelect.Day; if (a<10)

str1=\"-0\"+StrFromInt( DayreportSelect.Month, 10 ); else

str1=\"-\"+StrFromInt( DayreportSelect.Month, 10 ); if (b<10)

str2=\"-0\"+StrFromInt( DayreportSelect.Day, 10 );

else

str2=\"-\"+StrFromInt( DayreportSelect.Day, 10 );

\\\\本站点\\条件句=StrFromInt( DayreportSelect.Year, 10 )+str1+str2; dayreport.Where=\"日期='\"+\\\\本站点\\条件句+\"' order by 时\"; dayreport.FetchData(); dayreport.FetchEnd();

注意:在控制面板\\区域和语言\\自定义下,需定义短日期格式为

“yyyy-MM-dd”样式,若不同,则上面命令代码的判断段需作相应修改。 第四步:添加打印按钮

定义按钮的“命令语言连接”“弹起时”为: dayreport.Print(); 第五步:添加退出按钮 总体效果图如下图所示:

总结:这个报表用了组态王自带的控件KVADODBGrid,数据库用的是ACCESS,并用到了控件自带的SQL命令语言,总体实现起来较复杂,特别是报表所需内容较多时,需做的工作量比较的大,并且电子版的报表查看不方便。下一步可以考虑用VB、Excel来实现报表功能。

因篇幅问题不能全部显示,请点此查看更多更全内容