发布于 2006-11-01 16:05:45
0楼
现在关于历史数据的导出我已经有点眉目了,我作了个很简单的例子,就是新建一个无符号16位的变量,把这个变量归档组态好,然后在画面组态里就新加一个按钮,按钮里的VB代码如下:
Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)
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
sPro = "Provider=WinCCOLEDBProvider.1;"
sDsn = "Catalog=CC_wincc-ex_06_11_01_10_18_04R;"
sSer = "Data Source=.\WinCC"
sCon = sPro + sDsn + sSer
sSql = "TAG:R,'ProcessValueArchive\Tag1','0000-00-00 00:00:00.000','0000-00-01 00:00:00.000'"
MsgBox "Open with:" & vbCr & sCon & vbCr & sSql & vbCr
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.MoveFirst
Set objexcelApp=CreateObject("excel.application")
objexcelApp.visible=True
objexcelapp.workbooks.open"d:\1.xls"
For i=1 To 50
objExcelApp.Sheets(1).Range("A"&Trim(i)) = FormatNumber(oRs.Fields(2).value, 1)
objExcelApp.Sheets(1).Range("B"&Trim(i)) = FormatNumber(oRs.Fields(3).value, 1)
oRs.MoveNext
Next
oRs.Close
objexcelapp.activeworkbooks.save
objexcelapp.workbooks.close
objexcelapp.quit
Set objexcelapp=nothing
Set oRs = Nothing
conn.Close
Set conn = Nothing
End Sub
运行起来,可以把数据导出到Excel里了,不过我还是有几个问题,这个程序里我是用记录集oRs传递数据给Excel的,我前面也贴了个程序,那里面传递数据的是MSFG1,格式好像跟我这个记录集不一样,请问那个是什么?如何使用,是不是使用那个方式比较好(那程序是某公司编的)?再一个问题是查询数据的时候,如何把SQL语言嵌进来?
我愿重回汉唐 再奏角徵宫商 着我汉家衣裳 兴我礼仪之邦 我愿重回汉唐 再谱盛世华章 何惧道阻且长 看我华夏儿郎