回复:技术专题探讨-WinCC实现报表的不同方法及其应用-发帖整理之方案汇总

万泉河

  • 帖子

    10900
  • 精华

    132
  • 被关注

    1008

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

发布于 2009-03-19 16:44:00

0楼

quote:以下是引用虚心+学习在2009-03-09 22:00:54的发言:
月报的画面:
在画面中加入2个输入输出与分别填入年份和月份,再加入一个按钮,按钮文本:“导出到EXCEL”,代码如下:
Dim objExcelApp
Dim i,n,tagstr
Dim writeRiQi,ksrq,jsrq,max
Dim baobiao,jls,tabname
Dim blm,sj,zhi
Dim ReportYear,ReportMonth

Dim rb(17,31) '17表示18列数据 31表示31天即31行
Dim TagNameSerial,TagNameArray

'欲显示在EXCEL中的变量名序列
TagNameSerial="AI_HY1_LGh;AI_HY2_LGh;AI_GF1_LGh;AI_GF2_LGh;AI_LF1_LGh;AI_LF2_LGh;AI_BY1_LGh;AI_GZ1_LGh;AI_RL1_LGh;AI_RL2_LGh;AI_SH1_LGh;AI_SH2_LGh;AI_SC1_LGh"
TagNameArray=Split(TagNameSerial,";")
max=UBound(TagNameArray)
' For i=0 To 17
' For n=0 To 23
' rb(i,n)="-"
' Next
' Next

ReportYear=GetTag("ReportYear")
ReportMonth=GetTag("ReportMonth")

db_open


tabname="UA#ZDGD"

'23点即为当天保存的累计值,可以配合整点归档保存脚本,将保存时间调整到例如23:59:59
sql="SELECT ID, Tag_name, BM, ZHI, RQ, SJ, LastAccess, Fingerprint "
sql=sql & "FROM UA#ZDGD "
sql=sql & "WHERE (YEAR(RQ) = " & ReportYear & ") And (Month(RQ) = " & ReportMonth & ") And ({ fn Hour(SJ) } = 23) "
sql=sql & "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
Do While Not rs.EOF
'sj= Hour(rs("LastAccess") )
'sj= Hour(rs("sj") )
sj=Day(rs("RQ")) '取day值

blm=rs("Tag_name")
zhi=rs("ZHI")
i=0
for i=0 to max
If blm=TagNameArray(i) Then
rb(i,sj)=FormatNumber(zhi,2)
End If
Next
rs.movenext
loop
End If

Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Visible = True
objExcelApp.Workbooks.Open "F:\india\wincc\MonthReport.xls"

For i=0 To 17
For n=0 To 31
objExcelApp.Cells(n+4, 2+i).Value = rb(i,n)
Next
Next

'特殊单元格赋值
objExcelApp.Cells(1, 2).Value = ReportYear & "Year"
objExcelApp.Cells(1, 3).Value = ReportMonth & "Month"
objExcelApp.Cells(1, 13).Value = Now

'objExcelApp.Cells(1, 5).Value = WeekdayRturn(Weekday(ksrq))
' objExcelApp.Cells(32, 1).Value = tank_A_kg
' objExcelApp.Cells(32, 2).Value = tank_A_Q
' objExcelApp.Cells(32, 3).Value = tank_B_kg
' objExcelApp.Cells(32, 4).Value = tank_B_Q

' objExcelApp.ActiveWorkbook.Save

在这里需要说明一下,这个项目主要是做配料的流量累计,我的思路是每天的0点清除当日的累计量,所以报表是按照这个思路来做的,月报的累计量是取每天的23点的那个值。



微信公众号:PLC标准化编程,ZHO6371995
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32566条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。