我用的是WinCC6.0 SP3 Asia版的,当我在vb里用ADO从WinCC的归档数据库里查询数据时,为什么查询到的结果总是不完整?,但我从wincc的趋势曲线上看,数据都是存在的!郁闷!!!!!查询的代码如下:
Dim sPro As String
Dim sDsn As String
Dim sSer As String
Dim sCon As String
Dim sSqlA As String
Dim sSqlB As String
Dim sSqlC As String
Dim conn As Object
Dim oRsA As Object
Dim oRsB As Object
Dim oRsC As Object
Dim oComA As Object
Dim oComB As Object
Dim oComC As Object
Dim UserID As String
Dim fso, myfilep, daystr, dstr, fname
Dim s As Single
Label3.Caption = "数据查询中........."
Set fso = CreateObject("s cripting.FileSystemObject")
dstr = FormatDateTime(Date)
fname = App.Path + "\" + Trim(Text4.Text) + ".xls"
Dim ObjExcelApp
Set ObjExcelApp = CreateObject("Excel.Application")
'ObjExcelApp.Visible = True
ObjExcelApp.Workbooks.Open fname
sPro = "Provider=WinCCOLEDBProvider.1;"
sDsn = "Catalog=CC_dsqnew_07_02_05_14_54_48R;"
sSer = "Data Source=.\WinCC"
'UserID = "user id=DBA,password=SQL"
sCon = sPro + sDsn + sSer '+ UserID
sSqlA = "TAG:R," + Chr(39) + Trim(Text3.Text) + Chr(39) + Chr(44) + Chr(39) + Trim(Text1.Text) + Chr(39) + Chr(44) + Chr(39) + Trim(Text2.Text) + Chr(39)
sSqlB = "TAG:R," + Chr(39) + Trim(Text5.Text) + Chr(39) + Chr(44) + Chr(39) + Trim(Text1.Text) + Chr(39) + Chr(44) + Chr(39) + Trim(Text2.Text) + Chr(39)
sSqlC = "TAG:R," + Chr(39) + Trim(Text6.Text) + Chr(39) + Chr(44) + Chr(39) + Trim(Text1.Text) + Chr(39) + Chr(44) + Chr(39) + Trim(Text2.Text) + Chr(39)
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = sCon
conn.CursorLocation = 3
conn.Open
Set oRsA = CreateObject("ADODB.Recordset")
Set oRsB = CreateObject("ADODB.Recordset")
Set oRsC = CreateObject("ADODB.Recordset")
Set oComA = CreateObject("ADODB.Command")
Set oComB = CreateObject("ADODB.Command")
Set oComC = CreateObject("ADODB.Command")
oComA.CommandType = 1
oComB.CommandType = 1
oComC.CommandType = 1
Set oComA.ActiveConnection = conn
Set oComB.ActiveConnection = conn
Set oComC.ActiveConnection = conn
oComA.CommandText = sSqlA
oComB.CommandText = sSqlB
oComC.CommandText = sSqlC
Set oRsA = oComA.Execute
Set oRsB = oComB.Execute
Set oRsC = oComC.Execute
oRsA.MoveFirst
oRsB.MoveFirst
oRsC.MoveFirst
'm = oRs.Fields(1).Name
s = oRsA.RecordCount
ObjExcelApp.worksheets("sheet1").Cells(1, 2).Value = "A 相电流"
ObjExcelApp.worksheets("sheet1").Cells(1, 1).Value = "时间"
ObjExcelApp.worksheets("sheet1").Cells(1, 3).Value = "B 相电流"
ObjExcelApp.worksheets("sheet1").Cells(1, 4).Value = "C 相电流"
Label3.Caption = "正在保存数据......"
For i = 2 To s
ObjExcelApp.worksheets("sheet1").Cells(i, 2).Value = oRsA.Fields(2).Value
ObjExcelApp.worksheets("sheet1").Cells(i, 1).Value = oRsA.Fields(1).Value
oRsA.MoveNext
Next i
ObjExcelApp.ActiveWorkbook.Save
For i = 2 To oRsB.RecordCount
ObjExcelApp.worksheets("sheet1").Cells(i, 3).Value = oRsB.Fields(2).Value
oRsB.MoveNext
Next i
ObjExcelApp.ActiveWorkbook.Save
For i = 2 To oRsC.RecordCount
ObjExcelApp.worksheets("sheet1").Cells(i, 4).Value = oRsC.Fields(2).Value
oRsC.MoveNext
Next i
ObjExcelApp.ActiveWorkbook.Save
ObjExcelApp.Workbooks.Close
'ObjExcelApp.Workbooks.Open fname
ObjExcelApp.Quit
Label3.Caption = "数据保存成功!!!!!!"
Set ObjExcelApp = Nothing
Set conn = Nothing
Set oRsA = Nothing
Set oRsB = Nothing
Set oRsC = Nothing
Set oComA = Nothing
Set oComB = Nothing
Set oComC = Nothing
我先把数据查询出来,然后写到Excel里。