此文搬自个人的博客
思路:要实现用户归档报表需要做到几点:1.怎样操作数据读写。2.查询数据。 3.输出报表。(以存入数据查询数据为例)
实现方式:
第一步存储数据
Function action
'----------------------------------------------------
'以下注释均是在变量下方注释;
'触发该动作的触发变量为@change(变量自建)
'flag 变量为标志状态监测是否第一次启动WINCC
'----------------------------------------------------
Set flag = HMIRuntime.Tags("flag")
flag.Read
If flag.Value =1 Then
Dim UA_Reportday_ID
Set UA_Reportday_ID = HMIRuntime.Tags("@UA_Reportday_ID")
Dim UA_Reportday_Job
Set UA_Reportday_Job = HMIRuntime.Tags("@UA_Reportday_Job")
UA_Reportday_ID.Read
UA_Reportday_ID.Write -1
UA_Reportday_Job.Read
UA_Reportday_Job.Write 6
End If
End Function
在flag全局动作中脚本如下(该脚本由flag变量触发动作)
Option Explicit
Function action
Dim flag
Set flag = HMIRuntime.Tags("flag")
flag.Read
If flag.Value =0 Then
flag.Write 1
End If
End Function
第二步查询(该步骤可以根据条件省略,以查询用户归档中的TET3为例)
在查询按钮动作中写入
Sub OnLButtonUp(ByVal Item, ByVal Flags, ByVal x, ByVal y)
Dim SQLlianjie
Set SQLlianjie=HMIRuntime.Tags("SQLlianjie")
SQLlianjie.Read
SQLlianjie.Write "select * from UA#Reportday where TET1=13"
MsgBox"查询成功"
End Sub
第三步 设计报表和配置报表打印(不清楚请参见西门子相关文档)
报表编辑器中配置布局中插入 ODBC数据库数据库表,双击弹出对象属性表,再双击数据库连接。
在数据库连接中有 ODBC数据源 若为本地数据源 可以使用变量@DatasourceNameRT。
在数据库连接选项中有一个SQL语句 若省掉以上第二部可以直接写上SQL查询语句,若是不省略就用以上设置的变量SQLlianjie来写入查询
语句。
第四步 报表打印(不清楚请参见西门子相关文档)
配置好打印作业
然后再画面中设置一个按钮在按钮中写入以下C脚本(PrintJob001为我的一个打印作业)
#include "apdefap.h"
void OnLButtonUp(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
#pragma option(mbcs)
RPTJobPreview("PrintJob001");
}