如题,在深入浅出wincc中有讲到用WinCCOLEDB读取过程值归档的方法,具体方法可见图片1,代码如下,但是运行VB应用程序,总是提示:
ConnectionOpen(ParseConnecTParams())无效的连接,不知问题出在哪?代码按书上例子只对连接字符串做了相应修改,或者问题在于WinCCConnectivityPack的安装上,ConnectivityPackServer装不上,只装得上Client
PrivateSubCommand1_Click()
DimsProASSTring
DimsDsnAsString
DimsSerAsString
DimsConAsString
DimsSqlAsString
DimconnAsObject
DimoRsAsObject
DimoComAsObject
DimoItemAsListItem
Dimm,n,s
‘#为ADODB创建connectionstring’
sPro="Provider=WinCCOLEDBProvider.1;"
sDsn="Catalog=CC_Archive_13_10_28_16_21_21R;"
‘sSer="DataSource=.\WinCC"‘
sSer="DataSource=QINJIWEN:\WinCC"
sCon=sPro+sDsn+sSer
‘#在sSql定义命名文本(相对时间)’
sSql="TAG:R,’3′,’0000–00–0000:10:00.000′,’0000–00–0000:00:00.000’"
MsgBox"Openwith:"&vbCr&sCon&vbCr&sSql&vbCr
‘建立连接’
Setconn=CreateObject("ADODB.Connection")
conn.ConnectionString=sCon
conn.CursorLocation=3
conn.Open
‘#使用命令文本进行查询’
SetoRs=CreateObject("ADODB.Recordset")
SetoCom=CreateObject("ADODB.Command")
oCom.CommandType=1
SetoCom.ActiveConnection=conn
oCom.CommandText=sSql
‘#填充记录集’
SetoRs=oCom.Execute
m=oRs.Fields.Count
‘#用记录集填充标准listview对象’
ListView1.ColumnHeaders.Clear
ListView1.ColumnHeaders.Add,,CStr(oRs.Fields(1).Name),140
ListView1.ColumnHeaders.Add,,CStr(oRs.Fields(2).Name),70
ListView1.ColumnHeaders.Add,,CStr(oRs.Fields(3).Name),70
If(m>0)Then
oRs.MoveFirst
n=0
DoWhileNotoRs.EOF
n=n+1
s=Left(CStr(oRs.Fields(1).Value),23)
SetoItem=ListView1.ListItems.Add()
oItem.Text=Left(CStr(oRs.Fields(1).Value),23)
oItem.SubItems(1)=FormatNumber(oRs.Fields(2).Value,4)
oItem.SubItems(2)=Hex(oRs.Fields(3).Value)
If(n>1000)ThenExitDo
oRs.MoveNext
Loop
oRs.Close
Else
EndIf
SetoRs=Nothing
conn.Close
Setconn=Nothing
EndSub
图片说明:
最佳答案
可以参考一下:《使用WinCCOLEDBProvider导出WinCC/CAS归档数》
http://blog.sina.com.cn/s/blog_669692a60100quuc.html
提问者对于答案的评价:
verygood!