Dim sPro
Dim sDsn
Dim sSer
Dim sCon
Dim sSql
Dim oRs
Dim conn
Dim oCom
Dim oItem
Dim m, n, s,i
Dim hourdate
Dim secdate
Dim k
Dim oList
Dim objExcelApp
Dim oItem2
Dim dt1,dt2
dt1=DateAdd("H",-8,ScreenItems("控件12").VALUe) ‘查询的起始时间,wincc采用世界标准的格林时间,与咱的时间差8个小时
dt2=DateAdd("H",-8,ScreenItems("控件13").VAlUe) ‘查询的终止时间
‘下面三行代码是查询所需要的提供者数据源等等
sPro = "Provider=WinCCOLEDBProvider.1;"
sDsn = "Catalog=CC_0414_08_04_14_20_46_43R;" ‘改为你的wincc工程的数据库名,
‘打开sql有两个与你工程有关的,选择带R的那个
sSer = "Data Source=.\WinCC"
sCon = sPro + sDsn + sSer’查询链接串
sSql= "TAG:R,'ProcessValueArchive\"&ScreenItems("控件8").ValUe&"','"&dt1&"','"&dt2&"'"
‘上面这一句是查询语句,从SQL for wincc数据库中查询,可以多项查询,详见课本
MsgBox "Open with:" & vbCr & sCon & vbCr & sSql & vbCr
‘下面是ADODB查询,需要用到上面的查询链接串,不需要修改
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = sCon
conn.CursorLocation = 3
conn.Open
Set oRs = CreateObject("ADODB.Recordset")
Set oCom = CreateObject("ADODB.Command")
oCom.CommandType = 1
Set oCom.ActiveConnection = conn
oCom.CommandText = sSql
Set oRs = oCom.Execute’oRS为查询得到的记录集
Set objexcelApp=CreateObject("excel.application")
objexcelApp.visible=True
objexcelapp.workbooks.open"d:\book.xls"
objExcelApp.Sheets(1).Range("a"&Trim(1)) =oRs.Fields(0).Name ‘以下五行是把字段名写到excel的第一行, ,oRS.Fields(0)为查询得到的记录集的第一个字段
objExcelApp.Sheets(1).Range("b"&Trim(1)) = oRs.Fields(1).Name
objExcelApp.Sheets(1).Range("c"&Trim(1)) = oRs.Fields(2).Name
objExcelApp.Sheets(1).Range("d"&Trim(1)) = oRs.Fields(3).Name
objExcelApp.Sheets(1).Range("e"&Trim(1)) = oRs.Fields(4).Name
For i=1 To oRs.RecordCount ‘做循环查询
objExcelApp.Sheets(1).Range("a"&Trim(i+1)) =oRs.Fields(0).value
objExcelApp.Sheets(1).Range("b"&Trim(i+1)) =DateAdd("H",8,oRs.Fields(1).value) ’格林时间
objExcelApp.Sheets(1).Range("c"&Trim(i+1)) = FormatNumber(oRs.Fields(2).value, 1)
objExcelApp.Sheets(1).Range("d"&Trim(i+1)) = FormatNumber(oRs.Fields(3).value, 1)
objExcelApp.Sheets(1).Range("e"&Trim(i+1)) = FormatNumber(oRs.Fields(4).value, 1)
oRs.MoveNext
Next
oRs.Close’一下为关闭excel,关闭连接等,释放资源
‘objexcelapp.activeworkbooks.save
‘objexcelapp.workbooks.close
‘objexcelapp.quit
Set objexcelapp=nothing
Set oRs = Nothing
conn.Close
Set conn = Nothing
单个查询已经实现了,书上查询多个变量语句是这样TAG:R,('valname1';'valname2'),...直接在查询变量那添加,可是我做了之后根本就行不通,想知道2个变量归档,第二个变量归档怎么实现查询。网上有的说做两个记录集查询,试了,结果多表查询会出现BOF和EOF游标冲突,VB基础薄弱,请各位前辈能指点一下2个变量怎么实现查询
最佳答案
参考一下:
http://mp.weixin.qq.com/s/jGeX3Z7RMxECfBLG_0AO0g
里面的文档里有关于这个详细的介绍
主要是你查询到的数据以一个表格形式排列下来的
提问者对于答案的评价:
感谢任老大,还是通过你的方法可以实现
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc363043.html