看过用用户归档做报表的例子,使用VB和SQL语言将用户归档的数据库导出到EXCEL,但由于我比较菜,那些代码都看不懂的,希望前辈们给我指点!给我说下详细的思路!
最好能给我解释下每段代码的功能!不胜感激!
在用户归档中加入如下2个表:
创建2个归档,归档类型:无限制;通讯:无;控制变量:无;标记:上一次修改。
gdblm:别名:归档变量名
字段名 数据类型 长度 别名
BLWB 字符串 30 变量文本
DW 字符串 10 单位
Tag_name 字符串 30 变量名
ZDGD:整点归档
字段名 数据类型 长度 别名
BM 字符串 30 别名
RQ 日期/时间 日期
SJ 日期/时间 时间
Tag_name 字符串 30 变量名
ZHI 数(浮点) 值
WINCC动作,触发器按每小时的00:00触发。
Option Explicit
Function action
Dim gzd,RM_MASTER,tagstr,tag_name,table_name
Dim tag_N,tag_T,tag_U,i,tag_W
Dim Atag_N,Atag_T,Atag_U,max,Atag_W,idd,sql1,db_time
' On Error Resume Next
RM_MASTER=GetTag("@RM_MASTER")
'RM_MASTER=1
'If RM_MASTER=1 Then
table_name="UA#ZDGD"
db_open
sql="SELECT * FROM " & table_name & " ORDER BY ID DESC"
Set rs = CreateObject("ADODB.Recordset")
rs.Open sql, conn, 1, 1
If Not rs.eof And Not rs.bof Then
idd=rs(0)
db_time=rs("SJ")
Else
idd=0
db_time="00:00"
End If
If Hour(db_time)<>Hour(Now()) Then
sql="SELECT * FROM UA#gdblm ORDER BY ID"
Set rs = CreateObject("ADODB.Recordset")
rs.Open sql, conn, 1, 1
If Not rs.eof And Not rs.bof Then
rs.MoveFirst
i=0
Do While Not rs.Eof
tag_N=tag_N & ";" & rs(1)
tag_T=tag_T & ";" & rs(2)
tag_U=tag_U & ";" & rs(3)
i=i+1
rs.movenext
Loop
tag_N=Right(tag_N,Len(tag_N)-1)
tag_T=Right(tag_T,Len(tag_T)-1)
tag_U=Right(tag_U,Len(tag_U)-1)
Atag_N=Split(tag_N,";")
Atag_T=Split(tag_T,";")
Atag_U=Split(tag_U,";")
max= UBound(Atag_N)
For i=0 To max
idd=idd+1
tagstr=Atag_N(i)
tag_name=Atag_T(i)
'If RM_MASTER=1 Then
sql1=zdgd_sql1 (idd,tagstr,tag_name,table_name)
'MsgBox sql
conn.execute sql1
'End If
Next
'MsgBox sql
End If
End If
'End If
最佳答案
用户归档是归档你指定的变量,即存储在你的硬盘中(通过数据库的方式),报表查询是访问你的这个数据库,具体可以到下载中心下载文档。
提问者对于答案的评价:
哦
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc255813.html