报表系统.docx
- 文档编号:30192419
- 上传时间:2023-08-07
- 格式:DOCX
- 页数:15
- 大小:222.61KB
报表系统.docx
《报表系统.docx》由会员分享,可在线阅读,更多相关《报表系统.docx(15页珍藏版)》请在冰豆网上搜索。
报表系统
第八章
报表系统
本章内容
&实时数据报表
&历史数据报表
概述
数据报表是生产过程中必不可少的一个部分,利用报表系统可将生产过程中产生的实时和历史数据记录并查询,以一定格式输出给用户。
它是反映生产过程中的数据、状态等,并对数据进行记录的一种重要形式。
KingSCADA提供内嵌式报表系统,工程人员可以任意设置报表格式并通过系统提供的报表函数在报表中实现各种运算、数据转换、统计分析和打印等操作,在KingSCADA系统中既可以实现实时数据报表,也可以实现历史数据报表,同时还支持在线修改报表格式的功能。
第一节实时数据报表
创建实时数据报表:
新建一画面,名称为:
实时数据报表。
在画面上面创建报表如下:
第一步:
在KingSCADA图形开发系统中,执行“对象”菜单→“扩展图素”→“报表窗口”命令或者单击工具箱中的
图标→鼠标移到画面中,光标呈‘+’状,按住鼠标左键并拖动绘出一报表窗口,如图所示:
图8-1报表窗口
第二步:
报表窗口属性设置
选中报表窗口,在属性窗口中显示的是整个报表窗口的属性,如图所示:
图8-2报表属性窗口
下面只介绍报表窗口特有的属性:
Name:
设置报表窗口的名称,默认:
Report1,我们可以修改为“实时报表”。
RowCount:
设置报表窗口显示的行数,开发环境中最大行数为1000行,运行环境中最大行数为20000行。
我们设置为6。
ColumnCount:
设置报表窗口显示的列数,开发和运行环境最大列数为128列。
我们按照默认4列。
下面的属性我们可以按照默认处理。
HeadRowCount:
设置报表窗口显示的头标题行数,如果该项设置为2,则查询出来的数据从第3行开始显示,默认为0,表示查询出来的数据从第1行开始显示。
TailRowCount:
设置报表窗口显示的尾标题行数,作用同头标题行数。
ShowRowTitle:
设置报表窗口中是否显示行号,如:
1,2,3,4。
。
。
。
。
。
ShowColumnTitle:
设置报表窗口中是否显示列号,如:
A,B,C,D。
。
。
。
。
。
ShowInvalidDate:
设置报表窗口中是否显示无效值,True表示:
在关机或通讯失败时段显示该时段之前的最近一个有效数据的值;False表示:
在报表窗口中不显示变量通讯失败或者关机时段的数据,显示‘——’。
ShowTagTitle:
设置在运行环境中,查询历史数据时生成报表时,在报表中是否显示变量名称。
TimeStampFormat:
设置在运行环境中,查询历史数据时生成报表时,在报表中显示的时间格式。
第三步:
设置报表
选中报表窗口→单击鼠标右键,在弹出的右键菜单中执行“编辑”命令,弹出报表工具箱,如图所示:
图8-3报表工具箱
报表工具箱主要是针对报表单元格进行编辑,包括:
剪切、复制、拷贝、对齐方式、合并单元格、拆分单元格等等,在这里我们只介绍下面几种常用工具的使用方法:
:
单击该按钮,弹出文件选择对话框,在对话框中选择一个已存在的报表模板文件(.rtl)并将其打开,此时该报表模板被加载到当前报表窗口中。
:
当某个报表编辑完成后,单击该按钮,将当前报表存储为一个报表模板文件,供用户调用。
:
单击该按钮取消上一次对报表单元格的输入操作。
:
在文本编辑框中(即:
工具箱的空白处)输入文本内容后,单击该按钮将文本内容输入到当前单元格中。
当用户选中一个已经有内容的单元格时,该内容会自动出现在文本编辑框中,您可以对原文本进行修改后重新输入到单元格中。
:
单击该按钮弹出变量选择窗口,选择要查询实时数据的变量。
在运行环境中可以看到该变量的实时值,或者在某个单元格中直接输入变量的名称,输入格式如:
=\\local\tagname。
:
单击该按钮,弹出报表内部函数选择对话框,如图所示:
图8-4报表内部函数选择对话框
报表内容函数只能应用在报表单元格中,有数学函数、字符串函数、统计函数等等,其基本上都来自KingSCADA的系统函数,使用方法相同,只是函数中参数发生了变化,报表内部函数是使用单元格的名称作为函数的参数:
如果是任选多个单元格,则使用方法为用逗号将各个单元格分隔,如:
sum(’a1’,’b1’,’c1’)。
如果选择的为连续的单元格,可以输入第一个单元格名称和最后一个单元格名称,中间用冒号分隔,如:
sum(’a1:
c10’)。
我们按照如下图8-5所示对实时报表进行编辑:
首先选中报表点击右键菜单的“编辑”将报表设置为编辑状态,选中第一行的四个单元格,点击右键菜单的“合并”,将第一行进行合并单元格处理,然后输入文字“实时报表”。
在其他单元格中分别输入:
日期,时间,催化剂罐液位,原料罐液位,反应釜液位,反应釜温度。
输入完成后我们需要输入要显示的变量了,例如我们点击第二行第二列,然后点击图8-3的报表工具箱的
,列出如图8-6所示的变量选择器,选择对应的变量:
\\local\$Date,然后点击
即可。
此时在第二行第二列就会显示:
=\\local\$Date。
当进入运行环境后此处就会显示当前的系统日期了。
同样的方式将其他变量也放到对应的行列上面即可。
图8-5实时报表
图8-6变量选择器
完成后我们可以对报表的单元格进行设置,选中我们要编辑的单元格,然后点击“右键”,弹出右键菜单,在右键菜单的“单元格格式”项中对单元格的数字,字体,对齐,边框,图案等进行设置,如图8-7所示:
完成后保存画面,切换到运行系统就会看到报表中实时显示变量的数值了。
图8-7单元格设置
第二节历史数据报表
我们现在做一个日报表,可以查询每天整点的历史数据,并且可以对报表进行保存,打印等处理。
我们新建一个画面,画面名称:
日报表。
在画面上面创建报表如下:
第一步:
制作日报表
在画面上添加一报表,如图8-8所示:
图8-8日报表画面
报表属性如图8-9所示:
修改报表的Name属性为:
日报表,修改RowCount属性为27行,修改ColumnCount属性为5列,修改HeadRowCount属性为3,修改ShowTagTitle属性为false,修改TimeStampFormat属性为hh:
mm:
ss格式。
图8-9报表属性框
第二步:
创建日期时间控件
在图形编辑器中单击“对象”菜单→UI控件→日期时间,在画面上添加日期时间控件,其属性设置,如图8-10所示:
将DateFormat属性修改为Short属性。
图8-10日期时间控件属性
第三步:
设置查询
我们可以利用日期时间控件的事件来处理,双击日期时间控件,弹出动画编辑对话框,选择“事件-日期时间变化”,编写命令语言如下:
floaty1;
floatm1;
floatd1;
longStartTime;
longEndTime;
stringdtime1;
y1=UIDateTime1.Year;
m1=UIDateTime1.Month;
d1=UIDateTime1.Day;
dtime1=StrFromReal(y1,0,"f")+"-"+StrFromReal(m1,0,"f")+"-"+StrFromReal(d1,0,"f");
日报表.SetCellStrings(4,1,27,5,"");//清空单元格
日报表.SetCellString(2,2,dtime1);//填写日期
StartTime=ConvertTimeToSecond(y1,m1,d1,0,0,0,0);//将指定的时间转换为以秒为单位的长整型数
EndTime=ConvertTimeToSecond(y1,m1,d1,23,59,59,0);
日报表.SetTime(StartTime,EndTime,3600000);//设置历史报表查询的时间段
日报表.SetHistData("\\local\催化剂罐.液位",2);//设置历史报表查询的变量
日报表.SetHistData("\\local\原料罐.液位",3);
日报表.SetHistData("\\local\反应釜液位",4);
日报表.SetHistData("\\local\反应釜温度",5);
日报表.Query();//开始查询历史数据
编辑完成后点击“确认”,完成查询语句的设置。
我们也可以在画面上添加一按钮,按钮文本为:
查询,在该按钮的“鼠标-左键按下”编写脚本程序,程序与上面的一样。
第四步:
设置保存按钮
在画面上添加一按钮,按钮文本为“保存”,该按钮按下命令语言如下:
floaty1;
floatm1;
floatd1;
stringdtime1;
stringfilename;
y1=UIDateTime1.Year;
m1=UIDateTime1.Month;
d1=UIDateTime1.Day;
dtime1=StrFromReal(y1,0,"f")+"-"+StrFromReal(m1,0,"f")+"-"+StrFromReal(d1,0,"f");
filename=InfoAppDir()+dtime1+”.rtl”;
日报表.ReportSaveAs(filename);//保存报表为rtl或者csv格式的文件
第五步:
设置打印按钮
在画面上添加一按钮,按钮文本为“打印,该按钮按下命令语言如下:
日报表.Print();
第六步:
运行报表画面
首先选择要查询的日期,或者按下“查询”按钮,可以查询历史数据。
点击“保存”按钮,可以将报表保存为rtl格式文件,文件名称为日期,如“2010-06-08.rtl”,文件的保存路径为工程所在的路径。
点击“打印”按钮,可以对报表进行打印输出。
第三节数据库查询报表
我们以查询报警记录为例讲解如何将符合查询条件的数据查询到报表中来进行展示。
前面章节中我们讲解了将报警信息存储到关系数据库中,下面我们就按照日期作为条件将符合条件的记录查询出来。
在查询之前我们需要先了解一下报警信息存储的数据库的情况,默认的报警DSN名称为:
Alarm&Event,参考第六章图6-6所示,对应的数据库存储到工程路径下面的AlarmData文件夹下面,数据库文件名称为:
Alarm&Event.mdb。
我们可以打开此数据库看一下如图8-11所示:
报警数据表命名规则为Alarm+年月。
图8-11Alarm&Event数据库
我们看一下报警表的字段,选中报警表,然后点击“设计”打开报警表的设计视图,如图8-12所示:
此设计视图为报警表的所有字段,我们在实际使用过程中并不是所有的字段都会用到,例如ExtendField1,ExtendField2可能就不会用到。
报警表的字段的中文说明如下:
图8-12Alarm表的设计视图
我们新建一个画面,画面名称:
报警查询。
在画面上面创建报表如下:
第一步:
制作一个报警查询报表
在画面上添加一报表,如图8-13所示:
我们选择如下几个字段来显示查询结果。
报表设置完成后我们选中报表,点击右键选择右键菜单的“编辑”,出现报表工具栏。
点击报表工具栏的
,将此报表保存为一个模板,文件名为:
报警.rtl,保存路径为工程路径下面。
图8-13日报表画面
第二步:
创建日期时间控件
在图形编辑器中单击“对象”菜单→UI控件→日期时间,在画面上添加日期时间控件,其属性设置,如图8-10所示:
将DateFormat属性修改为Short属性。
第三步:
设置报警查询
我们可以利用日期时间控件的事件来处理,双击日期时间控件,弹出动画编辑对话框,选择“事件-日期时间变化”,编写命令语言如下:
floaty1;
floatm1;
floatd1;
stringdtime1;
stringdtime2;
stringwhe;
stringfilename;
y1=UIDateTime1.Year;
m1=UIDateTime1.Month;
d1=UIDateTime1.Day;
dtime1=StrFromReal(y1,0,"f")+"-"+StrFromReal(m1,0,"f")+"-"+StrFromReal(d1,0,"f");
if(m1<10)
{
dtime1=StrFromReal(y1,0,"f")+"-0"+StrFromReal(m1,0,"f");
dtime2=StrFromReal(y1,0,"f")+"0"+StrFromReal(m1,0,"f");
}
else
{
dtime1=StrFromReal(y1,0,"f")+"-"+StrFromReal(m1,0,"f");
dtime2=StrFromReal(y1,0,"f")+StrFromReal(m1,0,"f");
}
if(d1<10)
dtime1=dtime1+"-0"+StrFromReal(d1,0,"f");
else
dtime1=dtime1+"-"+StrFromReal(d1,0,"f");
whe="selecttagname,AlarmTime,AlarmValue,AlarmType,EventTime,ResumeValue,EventType,GroupNamefromAlarm"+dtime2+"where[AlarmTime]>=#"+dtime1+"0:
0:
0#and[AlarmTime]<=#"+dtime1+"23:
59:
59#";
/*bool*/KDBGetDataset("MyDataset","DSN=Alarm&Event",whe);
filename=/*string*/InfoAppDir()+"报警.rtl";
Report1.ReportLoad(filename);
Report1.SetDataset2("MyDataset",2,1);
课后练习:
1、利用KingSCADA3.0提供的脚本系统,实现以下功能:
当某一模拟量改变时,对某一开关量实现取反操作(暂时使用内存变量)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 报表 系统