回复:关于报表脚本,大神给讲讲这段脚本

RENHQ

版主 西门子1847工业学习平台

  • 帖子

    13662
  • 精华

    61
  • 被关注

    2166

论坛等级:至圣

注册时间:2008-12-28

钻石 钻石 如何晋级?

发布于 2016-12-23 21:25:12

1楼

On Error Resume Next

'下面是定义变量

Dim SQL_NAME

SQL_NAME="ZYFJ_DAY"

ScreenItems("DateFrom1").value=DateAdd("d", +1, ScreenItems("DateFrom").value) '设置起始时间吧,猜的

Dim By, Bm, Bd

Dim Ny, Nm, Nd

Dim BeginDate,BeginDate1 

Dim EndDate,EndDate1  

Dim DateFrom,DateFrom1

Set DateFrom = ScreenItems("DateFrom")

Set DateFrom1 = ScreenItems("DateFrom1")

'获取时间

 By = Year(DateFrom.Value)

 Bm = Month(DateFrom.Value)

 Bd = Day(DateFrom.Value)

 Ny = Year(DateFrom1.Value)

 Nm = Month(DateFrom1.Value)

 Nd = Day(DateFrom1.Value)

'形成查询的起始时间

BeginDate = By & "-" & Bm & "-" & Bd & " " &"00:00:00" 

EndDate  = By & "-" & Bm & "-" & Bd & " " &"23:00:59" 

BeginDate1 = Ny & "-" & Nm & "-" & Nd & " " & "00:00:00" 

EndDate1 = Ny & "-" & Nm & "-" & Nd & " " & "00:59:00" 

'查询语句

Dim SQL

SQL = "Select ThisTime,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13 FROM UA#TL_Daily WHERE  ThisDay BETWEEN '" & BeginDate & "' and '" & EndDate & "'  or ThisDay BETWEEN '" & BeginDate1 & "' and '" & EndDate1 & "' "

'诊断输出

HMIRuntime.Trace  vbCrLf & BeginDate

HMIRuntime.Trace  vbCrLf & EndDate 

HMIRuntime.Trace  vbCrLf & SQL

'定义路径

Dim SQL_Path  

SQL_Path=HMIRuntime.ActiveProject.Path & "\SQL\" 

HMIRuntime.Trace  vbCrLf & "SQL_Path: " & SQL_Path      

'诊断输出

HMIRuntime.Trace  vbCrLf & SQL

'定义数据库连接

Dim Adodc1

Set Adodc1 = ScreenItems("Adodc1")

Adodc1.ConnectionString="DSN=" & HMIRuntime.Tags("@DatasourceNameRT").Read

Adodc1.RecordSource=SQL

Adodc1.Refresh

'定义表格控件,和属性操作

Dim Spreadsheet1

Set Spreadsheet1=ScreenItems("Spreadsheet1")


    Dim ssConstants

   

    Set ssConstants = Spreadsheet1.Constants


Spreadsheet1.ActiveSheet.Protection.Enabled = False


Spreadsheet1.XMLURL=SQL_Path & SQL_Name & ".xml"


'表格控件操作

Dim i, Temp1

Dim intIRow 


Spreadsheet1.ActiveSheet.Cells(2, 12).Value=By & "-" & Bm & "-" & Bd


intIRow=5

'查询结果和表格控件填充

If Adodc1.Recordset.recordcount<>0 Then


Do While Not Adodc1.Recordset.eof

intIRow=intIRow+1


 For i=0 To Adodc1.Recordset.Fields.Count-1

 Spreadsheet1.ActiveSheet.Cells(intIRow, i+1).Value = Adodc1.Recordset.Fields(i)


If i=0 Then

Spreadsheet1.ActiveSheet.Cells(intIRow, i+1).NumberFormat ="HH:MM:SS"


 End If 

  Next 

  

Adodc1.Recordset.MoveNext

Loop


Else

 HMIRuntime.Trace  vbCrLf &  "no data found!!!!"

End If 

Spreadsheet1.ActiveSheet.Cells(35, 12).Value=Now

MsgBox("查询完成,记录数:" & Adodc1.Recordset.recordcount )


Set Adodc1=Nothing


End Sub


上面是大概解释

嗯,你这个查询的缺不少脚本,但存的SQL查询应该就差2个对象吧

数据库连接语句也不对

其他没仔细看

参考下面的文档吧

WinCC、Excel、VBA、脚本、连通性软件包

https://support.industry.siemens.com/cs/cn/zh/view/71676391

如何从SQL数据库中通过趋势归档输出变量?

https://support.industry.siemens.com/cs/cn/zh/view/44240726

在WinCC中如何使用VBS读取报警记录数据到EXCEL

https://support.industry.siemens.com/cs/cn/zh/view/77938393

在WinCC中如何使用VBS读取变量归档数据到EXCEL

https://support.industry.siemens.com/cs/cn/zh/view/77940055

通过VBS脚本在ListView控件中显示WinCC的变量记录

https://support.industry.siemens.com/cs/cn/zh/view/74932765

WinCC数据报表实现方法介绍

https://support.industry.siemens.com/cs/cn/zh/view/78668993


Q群:https://jq.qq.com/?k=9BDuEgf6
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32575条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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