在WINCC中連接配接資料庫可以使用ADO控件進行連接配接資料庫,但是通常都不是用的ADO控件進行連接配接資料庫,以下講講winccZ中使用ADO對象連接配接查詢資料庫。以下以報警記錄為例。
一、了解ADO對象
1.1ADO對象操作資料庫是微軟提供的一種接口。
1.2對ADO對象的通路使用CreateObject函數(詳情請參看CreateObject函數資料)
ADO元件的字首是ADODB,是以通路的時候必須為ADODB.XX(X代表對象)
eg:
dim conn,oRs,oCom
Set conn = CreateObject("ADODB.Connection") 'Connection對象
Set oRs = CreateObject("ADODB.Recordset") 'ADODB.Recordset對象
Set oCom = CreateObject("ADODB.Command") 'ADODB.Command指令對象
二、對象
2.1 Connection 對象
2.1.1 open 方法
文法
connection.Open ConnectionString,UserID,Password,OpengOptions
說明
ConnectionString:可選參數,字元串,包含連接配接資訊
UserID:可選參數,字元串,包含建立連接配接時候用的使用者名
Password:可選參數,字元串,包含建立連接配接時候用密碼
OpenOptions:可選參數,連接配接打開方式
eg1:(連接配接資料庫代碼方法1,僅連接配接部分代碼)
Dim conn
Dim tagDSNName
Set tagDSNName = HMIRuntime.Tags("@DatasourceNameRT")
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = "Provider=WinCCOLEDBProvider.1;Catalog="&tagDSNName.Read&";Data Source=.\WinCC"
conn.CursorLocation = 3
conn.Open
eg2:(連接配接資料代碼方法2,連接配接部分代碼)
Dim conn
Dim tagDSNName
Set tagDSNName = HMIRuntime.Tags("@DatasourceNameRT")
Set conn = CreateObject("ADODB.Connection")
conn.CursorLocation = 3
conn.Open "Provider=WinCCOLEDBProvider.1;Catalog="&tagDSNName.Read&";Data Source=.\WinCC"
2.1.2 close方法
connection.close
eg:
Dim conn
Dim tagDSNName
Set tagDSNName = HMIRuntime.Tags("@DatasourceNameRT")
Set conn = CreateObject("ADODB.Connection")
conn.CursorLocation = 3
conn.Open "Provider=WinCCOLEDBProvider.1;Catalog="&tagDSNName.Read&";Data Source=.\WinCC"
'這裡寫上對資料庫查詢,修改等操作
conn.close
2.1.3 execute方法
文法
Cn.Execute strCommand,[IngRowsAffected[,IngOptions]]
說明
strCommand:可以是查詢語句、表名、存儲過程名等
IngRowsAffected:可選參數,傳回Insert、Update 、Delete查詢語句後所影響的數目
IngOptiongs: 參數可以如下
adCmdUnkown:Command類型未定,由資料源提供者去判斷Command文法
AdCmdFile:Command是和對象類型相應的檔案名稱
adCmdStoredProc:Command是存儲過程名稱
adCmdTable:Command是能産生内部SELECT*FROM TableName查詢的表名稱
adCmdTableDirect:Command是能直接從表中擷取行内容的表名稱
adCmdText:Command是一條SQL語句
eg:
Dim conn,oCom,oRs
Dim tagDSNName
Set tagDSNName = HMIRuntime.Tags("@DatasourceNameRT")
Set conn = CreateObject("ADODB.Connection")
conn.CursorLocation = 3
conn.Open "Provider=WinCCOLEDBProvider.1;Catalog="&tagDSNName.Read&";Data Source=.\WinCC"
Set oCom = CreateObject("ADODB.Command")
Set oRs = CreateObject("ADODB.Recordset")
oCom.CommandType=1
Set oCom.ActiveConnection = conn
oCom.CommandText ="ALARMVIEW:Select * FROM AlgViewCHT "
Set oRs = oCom.Execute
'以上4句還可以寫成 Set oRs=conn.Execute("ALARMVIEW:Select * FROM AlgViewCHT ")
conn.close
2.2 Recordset對象
Recordset 常用屬性
RecordsetCount:傳回目前記錄的數目
BOF:表示目前記錄位于該對象第一個記錄之前
EOF:表示目前記錄位于該對象最後一個記錄之後。
movefirst:移動到第一條
movenext:移動到下一條
movelast:移動到最後一條
eg:
Dim conn,oCom,oRs
Dim m
Dim tagDSNName
Set tagDSNName = HMIRuntime.Tags("@DatasourceNameRT")
Set conn = CreateObject("ADODB.Connection")
conn.CursorLocation = 3
conn.Open "Provider=WinCCOLEDBProvider.1;Catalog="&tagDSNName.Read&";Data Source=.\WinCC"
Set oRs = CreateObject("ADODB.Recordset")
Set oRs=conn.Execute("ALARMVIEW:Select * FROM AlgViewCHT ")
m = oRs.RecordCount
msgbox "報警行數"&m
conn.close
2.2.1 Open方法
文法
recordset.Open Source,ActiveConnection,CursorType,LockType,Options
說明
Source:可選參數,變體型,計算Command對象的變量名、SQL語句、表名、存儲過程調用或持久的Recordst檔案名
ActiveConnection:可選參數,變體型,計算有效Connection對象變量名或字元串,包含ConnectionString參數
CursorType:可選參數,用于确定資料提供者打開Recordset時應該使用遊标類型,類型如下
adOpenForwardOnly:打開僅向前類型遊标(預設類型)
adOpenKeyset:打開鍵集類型遊标
adOpenDynamic:打開動态類型遊标
adOpenStatic:打開靜态類型遊标
注:具體解釋請參考百度結果,這裡我們主要講解應用方面的東西。
LockType:可選參數,确定資料提供者打開Recordset時應該使用的鎖定(并發)類型的LockTypeEnum 值,類型如下
adLockReadOnly:隻讀,預設值
adLockPessinistic:保守式鎖定,提供者完成確定成功編輯記錄所需的工作,通常通過在編輯時候鎖定資料源的記錄來完成。
adLockOptimistic:開放式鎖定,提供者試用開放式鎖定,隻在調用Update方法時才鎖定記錄。
adLockBatchOptimistic:開放式批更新,用于批更新模式
Optiongs:可選參數,長整型,用于訓示資料提供者如何計算Source參數,或從以前儲存的Recordset中恢複Recordset(以下省略參數類型講解)
eg:
Dim conn,oRs,oCom
Dim m,i
Dim tagDSNName
Set tagDSNName = HMIRuntime.Tags("@DatasourceNameRT")
Set conn = CreateObject("ADODB.Connection")
conn.CursorLocation = 3
conn.Open "Provider=WinCCOLEDBProvider.1;Catalog="&tagDSNName.Read&";Data Source=.\WinCC"
Set oRs = CreateObject("ADODB.Recordset")
oRs.open "ALARMVIEW:Select * FROM AlgViewCHT ",conn
m = oRs.RecordCount
MsgBox "報警行數"&m
oRs.Close
conn.Close
2.3 Command對象
2.3.1 對象屬性說明
ActiveConnection:使打開的資料庫連接配接與Command對象關聯
CommandText:可執行的指令文本,如SQL語句
CommandType:指定指令類型以優化性能
CommandTimeout:設定提供者等待指令行的秒數
以下摘自西門子連通性文檔
過程值記錄集結構

報警
過程值歸檔:
Set oRs = CreateObject("ADODB.Recordset")
Set oCom = CreateObject("ADODB.Command")
oCom.CommandType = 1
Set oCom.ActiveConnection = conn
oCom.CommandText = "TAG:R,'PVArchive\Tag1','0000-00-00 00:10:00.000','0000-00-00 00:00:00.000'"
報警消息歸檔:
Set oRs = CreateObject("ADODB.Recordset")
Set oCom = CreateObject("ADODB.Command")
oCom.CommandType = 1
Set oCom.ActiveConnection = conn
oCom.CommandText = "ALARMVIEW:Select * FROM AlgViewEnu"
使用者歸檔
Set oRs = CreateObject("ADODB.Recordset")
Set oCom = CreateObject("ADODB.Command")
oCom.CommandType = 1
Set oCom.ActiveConnection = conn
oCom.CommandText = "SELECT * FROM UA#Test"
關于資料集可參考《ConnectivityPackInfoSystem_zh-CHS》文檔其中非常詳細
如果需要了解更多的方法,屬性,請查閱ADODB手冊上面非常的詳細,本文并非專門講解ADODB對象的文章而是重點在講WINCC中如何使用方法,歡迎交流學習 。