本文将介绍组态王7.5版本的日报、月报以及年报的实现过程。日报、月报和年报均设置了两个页面,一个页面在后台做数据处理,并保存报表,另一个页面通过查询已经保存好的报表文件来实现报表查询,具体实现过程如下:
一、日报的生成
1.新建后台处理画面做数据处理

报表名称为Report5,这里相当于一个模板,设计可以自由发挥,average、max、min函数均为报表单元格函数,产品帮助中报表系统章节可以查询到
2.写事件命令语言

脚本如下:
string FileName;
FileName=InfoAppDir()+"日报\"+ StrFromReal( \\local\$Year, 0, "f" )+"年"+StrFromReal(\\local\$Month, 0, "f" )+"月"+StrFromReal(\\local\$Day, 0, "f" )+"日"+".rtl";
//如果日报路径下没有当天的文件就清空后台日报,并保存报表到日报路径下,如果日报路径下有当天的报表就直接加载报表
long return01=InfoFile( Filename, 1, \\local\$Minute );
if (return01==0)
{
ReportSetCellString2("Report5", 6, 1,29,11, "");
ReportSaveAs("Report5",FileName);
}
else
{
ReportLoad("Report5",FileName);
}
//后台日报填充数值
ReportSetCellString("Report5", 3,10, \\local\$Date);
long hang=\\local\$Hour+6;
string timestr=time(\\local\$Hour,0,0);
ReportSetCellString("Report5", hang,1, timestr);
ReportSetCellValue("Report5", hang,2,\\local\颗粒物);
ReportSetCellValue("Report5", hang,3,\\local\颗粒物折算);
ReportSetCellValue("Report5", hang,4, \\local\SO2);
ReportSetCellValue("Report5", hang,5, \\local\SO2折算);
ReportSetCellValue("Report5", hang,6, \\local\NO2);
ReportSetCellValue("Report5", hang,7, \\local\NO2折算);
ReportSetCellValue("Report5", hang,8, \\local\流量);
ReportSetCellValue("Report5", hang,9, \\local\O2);
ReportSetCellValue("Report5", hang,10, \\local\温度);
ReportSetCellValue("Report5", hang,11, \\local\水分);
ReportSaveAs("Report5",FileName);
3.新建日报画面

画面命令语言显示时:

脚本:
string FileName;
报表名="";
FileName=InfoAppDir()+"日报\"+"*.rtl";
listClear("报表查询");
ListLoadFileName( "报表查询", FileName );
画面中其他按钮中

圈1:下拉框控件关联报表名这个字符串变量
圈2:

脚本:
string FileName;
FileName=InfoAppDir()+"日报\"+"*.rtl";
listClear("报表查询");
ListLoadFileName( "报表查询", FileName );
圈3:

脚本:
string FileName;
FileName=InfoAppDir()+"日报\"+\\local\报表名;
FileDelete( Filename );
string FileName1;
FileName1=InfoAppDir()+"日报\*.rtl";
listClear("报表查询");
ListLoadFileName( "报表查询", FileName1 );
圈4:

string FileName;
FileName=InfoAppDir()+"日报\"+\\local\报表名;
ReportLoad("Report1",FileName);
二、月报的生成
-
新建后台月报画面

-
写事件命令语言

脚本如下:
ShowPicture("后台月报");
HidePicture("后台月报");
string FileName;
FileName=InfoAppDir()+"月报\"+ StrFromReal( \\local\$Year, 0, "f" )+"年"+StrFromReal(\\local\$Month, 0, "f" )+"月"+".rtl";
判断月报目录下是否已经有当月的报表文件了
long return02;
return02=InfoFile( Filename, 1, \\local\$Minute );
if (return02==0)
{
ReportSetCellString2("Roport7", 6, 1, 36, 11, "");
Reportsaveas("Roport7",FileName);
\\local\日计数=0;
}
else
{
ReportLoad("Report7",FileName);
}
string riqi=StrFromReal(\\local\$Year, 0,"f" )+"年"+StrFromReal( \\local\$Month, 0,"f" )+"月";//填充月份
ReportSetCellString("Report7", 3, 10, riqi);
long hang;
hang= $Day+5;
\\local\日计数=\\local\日计数+1;
string str;
long Value;
str=ReportGetCellString("Report5", 3, 10);//取日报的日期,填充到后台月报
ReportSetCellString("Report7", hang, 1, str);
Value=ReportGetCellValue("Report5", 30, 2);//将日报表中的统计数据(平均值)输入到月报表中
ReportSetCellValue("Report7", hang, 2, Value);
Value=ReportGetCellValue("Report5", 30, 3);
ReportSetCellValue("Report7", hang, 3, Value);
Value=ReportGetCellValue("Report5", 30, 4);
ReportSetCellValue("Report7", hang, 4, Value);
Value=ReportGetCellValue("Report5", 30, 5);
ReportSetCellValue("Report7", hang, 5, Value);
Value=ReportGetCellValue("Report5", 30, 6);
ReportSetCellValue("Report7", hang, 6, Value);
Value=ReportGetCellValue("Report5", 30, 7);
ReportSetCellValue("Report7", hang, 7, Value);
Value=ReportGetCellValue("Report5", 30, 8);
ReportSetCellValue("Report7", hang, 8, Value);
Value=ReportGetCellValue("Report5", 30, 9);
ReportSetCellValue("Report7", hang, 9, Value);
Value=ReportGetCellValue("Report5", 30, 10);
ReportSetCellValue("Report7", hang, 10, Value);
Value=ReportGetCellValue("Report5", 30, 11);
ReportSetCellValue("Report7", hang, 11, Value);
Reportsaveas("Report7",FileName);
//将日报表中的统计数据(平均值)输入到月报表中
Value=ReportGetCellValue("Report7", 39, 2);
Value=Value/\\local\日计数;
ReportSetCellValue("Report7", 37, 2, Value);
Value=ReportGetCellValue("Report7", 39, 3);
Value=Value/\\local\日计数;
ReportSetCellValue("Report7", 37, 3, Value);
Value=ReportGetCellValue("Report7", 39, 4);
Value=Value/\\local\日计数;
ReportSetCellValue("Report7", 37, 4, Value);
Value=ReportGetCellValue("Report7", 39, 5);
Value=Value/\\local\日计数;
ReportSetCellValue("Report7", 37, 5, Value);
Value=ReportGetCellValue("Report7", 39, 6);
Value=Value/\\local\日计数;
ReportSetCellValue("Report7", 37, 6, Value);
Value=ReportGetCellValue("Report7", 39, 7);
Value=Value/\\local\日计数;
ReportSetCellValue("Report7", 37, 7, Value);
Value=ReportGetCellValue("Report7", 39, 8);
Value=Value/\\local\日计数;
ReportSetCellValue("Report7", 37, 8, Value);
Value=ReportGetCellValue("Report7", 39, 9);
Value=Value/\\local\日计数;
ReportSetCellValue("Report7", 37, 9, Value);
Value=ReportGetCellValue("Report7", 39, 10);
Value=Value/\\local\日计数;
ReportSetCellValue("Report7", 37, 10, Value);
Value=ReportGetCellValue("Report7", 39, 11);
Value=Value/\\local\日计数;
ReportSetCellValue("Report7", 37, 11, Value);
//将累计值转换为平均值
Reportsaveas("Report7",FileName);
-
新建月报画面

画面命令语言显示时:

脚本:
string FileName;
报表名="";
FileName=InfoAppDir()+"月报\"+"*.rtl";
listClear("月报查询");
ListLoadFileName( "月报查询", FileName );
画面中其他按钮:

圈2:

脚本:
string FileName;
FileName=InfoAppDir()+"月报\"+"*.rtl";
listClear("月报查询");
ListLoadFileName( "月报查询", FileName );
圈3:

脚本:
string FileName;
FileName=InfoAppDir()+"月报\"+\\local\报表名;
FileDelete( Filename );
string FileName1;
FileName1=InfoAppDir()+"月报\*.rtl";
listClear("月报查询");
ListLoadFileName( "月报查询", FileName1 );
圈4:

string FileName;
FileName=InfoAppDir()+"月报\"+\\local\报表名;
ReportLoad("月报",FileName);
三、年报的生成
-
新建后台年报

-
新建数据改变命令语言

脚本:
ShowPicture("后台年报");
HidePicture("后台年报");
string FileName;
FileName=InfoAppDir()+"年报\"+ StrFromReal( \\local\$Year, 0, "f" )+"年"+".rtl";
判断年报目录下是否已经有当年的报表文件了
long return02;
return02=InfoFile( Filename, 1, \\local\$Minute );
if (return02==0)
{
ReportSetCellString2("Roport0", 6, 1, 18, 11, "");
Reportsaveas("Roport0",FileName);
月计数=0;
}
else
{
ReportLoad("Report0",FileName);
}
string riqi=StrFromReal(\\local\$Year, 0,"f" )+"年";//填充年份
ReportSetCellString("Report0", 3, 10, riqi);
long hang;
hang=\\local\$Month+5;
月计数=月计数+1;
string str;
long Value;
str=ReportGetCellString("Report7", 3, 10);
ReportSetCellString("Report0", hang, 1, str);
Value=ReportGetCellValue("Report7", 37, 2);
ReportSetCellValue("Report0", hang, 2, Value);
Value=ReportGetCellValue("Report7", 37, 3);
ReportSetCellValue("Report0", hang, 3, Value);
Value=ReportGetCellValue("Report7", 37, 4);
ReportSetCellValue("Report0", hang, 4, Value);
Value=ReportGetCellValue("Report7", 37, 5);
ReportSetCellValue("Report0", hang, 5, Value);
Value=ReportGetCellValue("Report7", 37, 6);
ReportSetCellValue("Report0", hang, 6, Value);
Value=ReportGetCellValue("Report7", 37, 7);
ReportSetCellValue("Report0", hang, 7, Value);
Value=ReportGetCellValue("Report7", 37, 8);
ReportSetCellValue("Report0", hang, 8, Value);
Value=ReportGetCellValue("Report7", 37, 9);
ReportSetCellValue("Report0", hang, 9, Value);
Value=ReportGetCellValue("Report7", 37, 10);
ReportSetCellValue("Report0", hang, 10, Value);
Value=ReportGetCellValue("Report7", 37, 11);
ReportSetCellValue("Report0", hang, 11, Value);
//将月报表中的统计数据(平均值)输入到年报表中
Value=ReportGetCellValue("Report0", 21, 2);
Value=Value/月计数;
ReportSetCellValue("Report0", 19, 2, Value);
Value=ReportGetCellValue("Report0", 21, 3);
Value=Value/月计数;
ReportSetCellValue("Report0", 19, 3, Value);
Value=ReportGetCellValue("Report0", 21, 4);
Value=Value/月计数;
ReportSetCellValue("Report0", 19, 4, Value);
Value=ReportGetCellValue("Report0", 21, 5);
Value=Value/月计数;
ReportSetCellValue("Report0", 19, 5, Value);
Value=ReportGetCellValue("Report0", 21, 6);
Value=Value/月计数;
ReportSetCellValue("Report0", 19, 6, Value);
Value=ReportGetCellValue("Report0", 21, 7);
Value=Value/月计数;
ReportSetCellValue("Report0", 19, 7, Value);
Value=ReportGetCellValue("Report0", 21, 8);
Value=Value/月计数;
ReportSetCellValue("Report0", 19, 8, Value);
Value=ReportGetCellValue("Report0", 21, 9);
Value=Value/月计数;
ReportSetCellValue("Report0", 19, 9, Value);
Value=ReportGetCellValue("Report0", 21, 10);
Value=Value/月计数;
ReportSetCellValue("Report0", 19, 10, Value);
Value=ReportGetCellValue("Report0", 21, 11);
Value=Value/月计数;
ReportSetCellValue("Report0", 19, 11, Value);
//将年报中的各月平均值计算后输入到年报平均值中
Reportsaveas("Report0",FileName);
//按照固定路径格式保存年报
-
新建年报查询画面

画面命令语言显示时:

脚本:
string FileName;
FileName=InfoAppDir()+"年报\"+"*.rtl";
listClear("报表名");
ListLoadFileName( "报表名", FileName );
画面中其他按钮:

圈2:

脚本:
string FileName1;
FileName1=InfoAppDir()+"年报\"+"*.rtl";
listClear("报表名");
ListLoadFileName( "报表名", FileName1 );
圈3:

脚本:
string FileName;
FileName=InfoAppDir()+"年报\"+\\local\报表名;
ReportLoad("年报",FileName);
圈4:

脚本:
string FileName;
FileName=InfoAppDir()+"年报\"+\\local\报表名;
FileDelete( Filename );
string FileName1;
FileName1=InfoAppDir()+"年报\"+"*.rtl";
listClear("报表名");
ListLoadFileName( "报表名", FileName1 );
以上为功能实现说明,可私信索要例程
也可自行网盘保存
通过网盘分享的文件:7.5日月年报.zip
链接: https://pan.baidu.com/s/1b85yYiRq3hJAk0nzzYSh9g 提取码: enha