我要做一个按钮当点击时预览用报表编辑器中布局做的报表,怎么实现、应编写什么脚本?
是不是用这个函数RPTJobPrevie(pszJobName);这个函数中的pszJobName是什么的名字?具体应该怎么用?急用
最佳答案
一、 建立变量
除建立项目所需的所有外部变量外,还需建立报表需要的内部变量:
1、公用:year(无符号16位数) month(无符号8位数) day(无符号8位数)
2、日报表用:a1(无符号8位数) a2(无符号8位数) a3(无符号16位数)
ll1(文本变量16位字符集) ll2(文本变量16位字符集)
二、 变量记录
1、 定时器
根据归档时间组态定时器,将循环起始点设为0时0分0秒,以保证整点记录。
2、 归档
日、月、年报要创建不同的归档,归档周期不一样。
3、归档组态
变量归档周期小于等于1min的为快速归档,大于1min的为慢速归档,所以日、月、年报的归档都属于慢速归档。右键单击归档组态右侧栏中的Taglogging Slow,选择属性项,组态归档尺寸。“所有分段的时间段”即为所要存数据的最长时间,可根据用户需要更改为1-100年。“所有分段的最大尺寸”即为所存数据的最大尺寸,一条记录占的空间为2M(包括.ldf和.mdf两个文件),另外当前正在运行的记录占空间为51M,所以根据上述组态的最长时间和所要存的数据计算最大尺寸,比如一年内日报占用空间为:2×24×365×1+51=17571M,同样方法可以计算月报,年报的尺寸。预留一些余量,一般组态最大时间为100十亿字节足够。
三、报表编辑器
1、新建页面布局
在新建的页面布局右侧工具栏的“运行系统”中选择:变量记录运行系统——变量表格,鼠标左键在页面中拖放画出表格。右键单击表格,选择属性项,在弹出对话框中选择“连接项”,组态其中的各项。时间范围的起始时间和终止时间连接第一步建立的ll1和 ll2。
如果要添加标题则在视图选项中将页面切换到“静态部分”,加入静态文本。静态部分可以加入动态变量,但动态部分不能进行静态文本操作。(页面的灰色部分为静态部分)
2、 新建打印作业
在新建的打印作业中连接上面的页面布局。
在画面中组态按钮,在按钮的鼠标动作中写如下代码:
日报表代码:
char datestr[10];
char datestr1[10];
sprintf(datestr,"%02d-%02d-%02d" ,GetTagWord("year"),GetTagWord("month"),GetTagWord("day"));
SetTagChar("ll1",datestr);
SetTagWord("a1",GetTagWord("day")+1);
SetTagWord("a2",GetTagWord("month"));
SetTagWord("a3",GetTagWord("year"));
if(GetTagWord("a2")==1&&GetTagWord("day")==31)
{
SetTagWord("a2",2);
SetTagWord("a1",1);
}
if(GetTagWord("a2")==2&&GetTagWord("day")==28)
{
SetTagWord("a2",3);
SetTagWord("a1",1);
}
if(GetTagWord("a2")==3&&GetTagWord("day")==31)
{
SetTagWord("a2",4);
SetTagWord("a1",1);
}
if(GetTagWord("a2")==4&&GetTagWord("day")==30)
{
SetTagWord("a2",5);
SetTagWord("a1",1);
}
if(GetTagWord("a2")==5&&GetTagWord("day")==31)
{
SetTagWord("a2",6);
SetTagWord("a1",1);
}
if(GetTagWord("a2")==6&&GetTagWord("day")==30)
{
SetTagWord("a2",7);
SetTagWord("a1",1);
}
if(GetTagWord("a2")==7&&GetTagWord("day")==31)
{
SetTagWord("a2",8);
SetTagWord("a1",1);
}
else
{
if(GetTagWord("a2")==8&&GetTagWord("day")==31)
{
SetTagWord("a2",9);
SetTagWord("a1",1);
}
}
if(GetTagWord("a2")==9&&GetTagWord("day")==30)
{
SetTagWord("a2",10);
SetTagWord("a1",1);
}
if(GetTagWord("a2")==10&&GetTagWord("day")==31)
{
SetTagWord("a2",11);
SetTagWord("a1",1);
}
if(GetTagWord("a2")==11&&GetTagWord("day")==30)
{
SetTagWord("a2",12);
SetTagWord("a1",1);
}
if(GetTagWord("a2")==12&&GetTagWord("day")==31)
{
SetTagWord("a2",1);
SetTagWord("a1",1);
SetTagWord("a3",GetTagWord("year")+1);
}
sprintf(datestr1,"%02d-%02d-%02d ",GetTagWord("a3"),GetTagWord("a2"),GetTagWord("a1"));
SetTagChar("ll2",datestr1);
RPTJobPreview("PrintJob001");
提问者对于答案的评价:
非常感谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc278012.html