yuantao0615
級別: 探索解密
|
這段代碼在WINCC6.2中可以讀出歸檔數(shù)據(jù),在WINCC7.0中為什么卻完全讀不出來歸檔數(shù)據(jù)呢? 求高手指導(dǎo)。。!急急。。。。。 Dim sPro, sDsn, sSer, sCon, sSql Dim conn, oRs, oCom Dim DSNName Dim i As Integer Dim sStart, sStop As String Sub get_wincc_data() '--Get Database DSN name----------------------------------- Set DSNName = CreateObject("CCHMIRuntime.HMIRuntime") sDsn = DSNName.Tags("@DatasourceNameRT").Read '--build connection string----------------------------------- sPro = "Provider=WinCCOLEDBProvider.1;" sDsn = "Catalog=" & sDsn & ";" sSer = "Data Source=ZHANG\WinCC" sCon = sPro & sDsn & sSer 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 sStart = Year(DTPicker1.Value) & "-" & Month(DTPicker1.Value) & "-" & Day(DTPicker1.Value) & " 00:00:00" sStop = Year(DTPicker1.Value) & "-" & Month(DTPicker1.Value) & "-" & Day(DTPicker1.Value) & " 23:00:00" sStart = DateAdd("h", -8, CDate(sStart)) sStop = DateAdd("h", -8, CDate(sStop)) sSql = "Tag:R,('ProcessValueArchive\Fan1_T1'),'" & sStart & "','" & sStop & "' order by datetime" oCom.CommandText = sSql Set oRs = oCom.Execute If (oRs.EOF) Then oRs.Close Else oRs.MoveFirst i = 0 Do While Not oRs.EOF Sheet1.Cells(i + 4, 2) = oRs.Fields("RealValue").Value oRs.MoveNext i = i + 1 Loop oRs.Close End If sSql = "Tag:R,('ProcessValueArchive\Fan1_T2'),'" & sStart & "','" & sStop & "' order by datetime" oCom.CommandText = sSql Set oRs = oCom.Execute If (oRs.EOF) Then oRs.Close Else oRs.MoveFirst i = 0 Do While Not oRs.EOF Sheet1.Cells(i + 4, 3) = oRs.Fields("RealValue").Value oRs.MoveNext i = i + 1 Loop oRs.Close End If sSql = "Tag:R,('ProcessValueArchive\Fan1_P1'),'" & sStart & "','" & sStop & "' order by datetime" oCom.CommandText = sSql Set oRs = oCom.Execute If (oRs.EOF) Then oRs.Close Else oRs.MoveFirst i = 0 Do While Not oRs.EOF Sheet1.Cells(i + 4, 4) = oRs.Fields("RealValue").Value oRs.MoveNext i = i + 1 Loop oRs.Close End If sSql = "Tag:R,('ProcessValueArchive\Fan1_P2 '),'" & sStart & "','" & sStop & "' order by datetime" oCom.CommandText = sSql Set oRs = oCom.Execute If (oRs.EOF) Then oRs.Close Else oRs.MoveFirst i = 0 Do While Not oRs.EOF Sheet1.Cells(i + 4, 5) = oRs.Fields("RealValue").Value oRs.MoveNext i = i + 1 Loop oRs.Close End If Set oRs = Nothing Set conn = Nothing End Sub Private Sub DTPicker1_Change() clear_cell get_wincc_data End Sub Sub clear_cell() For i = 4 To 27 For j = 2 To 5 Cells(i, j) = "" Next j Next i End Sub |
---|---|
|