回复:技术专题探讨-WinCC实现报表的不同方法及其应用

虚心+学习

  • 帖子

    110
  • 精华

    6
  • 被关注

    3

论坛等级:游侠

注册时间:2003-11-05

普通 普通 如何晋级?

发布于 2009-03-09 21:52:55

0楼

下面把日报、月报、年报的具体输出方式叙述一下:
日报:在wincc的图形编辑器里制作日报画面:画面中放置一日期的输入输出域,再放置一个按钮,按钮文本:“导出到EXCEL”按钮代码如下:
Sub OnClick(ByVal Item)
Dim objExcelApp
Dim i,n,tagstr
Dim writeRiQi,ksrq,jsrq,max
Dim baobiao,jls,tabname
Dim blm,sj,zhi

' Dim jcyl_a,cgyl_a,yw_a,dqyl_a,jcpjwd_a,cgpjwd_s_a,cgpjwd_x_a
' Dim jcyl_b,cgyl_b,yw_b,dqyl_b,jcpjwd_b,cgpjwd_s_b,cgpjwd_x_b
' Dim tank_A_kg,tank_A_Q,tank_B_kg,tank_B_Q'
Dim rb(17,23) '17表示18列数据 23表示24小时即24行
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


ksrq=GetTag("ksrq")

If IsDate(ksrq)=False Then
'MsgBox "err ksrq =" & ksrq
ksrq=DateValue(Date)
SetTag "ksrq",ksrq
End If
jsrq=DateValue(ksrq)+1
'MsgBox jsrq
db_open


tabname="UA#ZDGD"

sql="SELECT * FROM " & tabname
'0点起显示
sql=sql & " WHERE (RQ = N'"&ksrq&"') "
'以每天9点为界显示
' sql=sql & " WHERE (RQ = N'"&ksrq&"') AND ({ fn HOUR(SJ) } >= 9) OR "
' sql=sql & " (RQ = N'"&jsrq&"') AND ({ fn HOUR(SJ) } < 9) "
sql=sql & " ORDER BY RQ DESC, SJ DESC"
'MsgBox sql
'writeRiQi="&ksrq="&ksrq&"&jsrq="&jsrq
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") )

blm=rs("Tag_name")
zhi=rs("ZHI")
'MsgBox sj & blm & 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\DayReport.xls"
'9点为界的赋值
' For i=0 To 17
' For n=9 To 23
' objExcelApp.Cells(n-4, 2+i).Value = rb(i,n)
' Next
' Next
' For i=0 To 17
' For n=0 To 8
' objExcelApp.Cells(n+20, 2+i).Value = rb(i,n)
' Next
' Next
'0点正常赋值
For i=0 To 17
For n=0 To 23
objExcelApp.Cells(n+5, 2+i).Value = rb(i,n)
Next
Next
'特殊单元格赋值
objExcelApp.Cells(1, 2).Value = ksrq
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
End Sub

管理员注:本帖已被纳入此次探讨发帖整理之方案汇总,请点此详阅
让学习成为一种习惯
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32575条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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