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

本文是《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 = 1
Set 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=FALSE
objExcelApp.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 





你可能感兴趣的:(WINCC)