WINCC7.0下用户归档的查询与导出——导出篇

来源:互联网 发布:预览 mac 编辑:程序博客网 时间:2024/06/16 04:50
本文是《WINCC7.0下用户归档的查询与导出——查询篇》的补充篇。

本文主要介绍对温度数据的导出,与查询篇不同的是:温度数据被自动存放在了SQL Server的压缩数据库中,其查询方法有所不同;温度属于外部变量,其存储时间按照UTC世界协调时的标准,注意与北京时间的转换。

注:本文的程序中所出现的变量省去了定义。

1. 定义连接字符串

'定义连接字符串sPro = "Provider=WinCCOLEDBProvider.1;"sDsn = "Catalog=CC_11_14_07_27_16_11_36R;"sSer = "Data Source=RUIWEI1_PC\WINCC"sCon = sPro + sDsn + sSer

2. 时间转换

UTCBeginTime = DateAdd("h",-8,LocalBeginTime)UTCEndTime =   DateAdd("h",-8,LocalEndTime)
将本地时间转换成UTC时间,直接调用DateAdd()函数即可,注意,此处的输入时间必须使用标准格式:YYYY-MM-DD HH:MM:SS
输出时间的转换可以使用Year() Month() Day() Hour() Minute() Second()函数提取制定的时间。

3. 查询过程

1) 设置查询间隔,查询间隔是一个外部变量

Set sVal = HMIRuntime.Tags("intervaltime")    sVal.Read
2) 设置查询字符串

sSql = "Tag:R,('report\TEMP_W1'),'"&UTCBeginTime&"','"&UTCEndTime&"',"sSql = sSql +"'order by Timestamp ASC','TimeStep="&sVal.Value&",1'"
3) 连接数据库

Set conn = CreateObject("ADODB.Connection")    conn.ConnectionString = sCon    conn.CursorLocation = 3    conn.Open
4) 取得查询结果

Set oRs = CreateObject("ADODB.Recordset")Set oCom = CreateObject("ADODB.Command")    oCom.CommandType = 1Set oCom.ActiveConnection = conn    oCom.CommandText = sSql
4. 打开Excel模板

需要调用Excel的接口打开模板,向其中写入数据。

Set ExcelApp  = GetObject(,"Excel.Application")  If TypeName(ExcleApp) = "Application" Then      For Each ExcelBook In ExcelApp.WorkBooks          If ExcelBook.FullName = "E:\温度模板.xls" Then              ExcelApp.ActiveWorkbook.Save             ExcelApp.Workbooks.Close             ExcelApp.Quit             Set ExcelApp= Nothing         Exit For         End If     Next End If Set objExcelApp=CreateObject("Excel.Application") objExcelApp.Visible=FALSEobjExcelApp.Workbooks.Open"E:\温度模板.xls"objExcelApp.Worksheets(sheetname).Activate 
5. 写入Excel

向(x,y)的单元格中写入数据,只需要向

objExcelApp.Cells(x,y).Value
赋值即可。

6. 保存并关闭

patch= "E:\打印\name.xls"  '定义待保存的文件名objExcelApp.ActiveWorkbook.SaveAs patch '另存为到patch路径下objExcelApp.Workbooks.Close objExcelApp.Quit 





0 0
原创粉丝点击