1、 建立數據庫表格
使用ACCESS數據庫,建立數據庫表,命名“DeviceInfo”。
2、組態王建立內存變量
3、創建記錄體
創建與Access數據庫關聯的記錄體。數據類型、字段名稱與數據庫中表格的相應內容應保持一致。
4、關聯數據源
在應用程序啟動時添加數據庫連接語句。
5、自定義函數
編寫自定義函數實現數據庫數據的插入,以及時間計算等功能。
函數內容如下所示。
if (var==1)
{
//寫入數據庫,字段賦值
\\本站點\DB_DESC=name;
\\本站點\DB_START=\\本站點\$日期+""+\\本站點\$時間;
\\本站點\DB_END="";
\\本站點\DB_LENGTH="";
SQLInsert( DeviceID,"DeviceInfo", "BIND" );//向數據中,插入一條記錄
}
else
{
string whrStr="描述='"+name+"'and 結束時間='" + " '" ;
string selStr="select * fromDeviceInfo where " + whrStr;
SQLSetStatement( DeviceID, selStr);
SQLExecute( DeviceID, "BIND",0 ); //功能等同sqlselect函數
string startStr = \\本站點\DB_START;
//開始時間轉換秒
string midY=StrMid ( startStr, 1, 4 );
string midM=StrMid ( startStr, 6, 2 );
string midD=StrMid ( startStr, 9, 2 );
string midH=StrMid ( startStr, 12, 2 );
string midMi=StrMid ( startStr, 15, 2 );
string midS=StrMid ( startStr, 18, 2 );
long lY=StrToInt ( midY);
long lM=StrToInt ( midM);
long lD=StrToInt ( midD);
long lH=StrToInt ( midH);
long lMi=StrToInt ( midMi);
long lS=StrToInt ( midS);
long startTime= HTConvertTime(lY,lM,lD,lH,lMi,lS);
long endTime= HTConvertTime (\\本站點\$年,\\本站點\$月,\\本站點\$日,\\本站點\$時,\\本站點\$分,\\本站點\$秒);//結束時間轉換秒
//計算時間差
long timeLength=endTime-startTime;//單位秒
string endStr=StrFromInt ( timeLength, 10)+"秒";
//寫入數據庫,所有字段重新賦值
\\本站點\DB_END=\\本站點\$日期+""+\\本站點\$時間;
\\本站點\DB_LENGTH=endStr;
//設置查詢條件,當條件相同時更新數據庫中的記錄
SQLUpdate( DeviceID,"DeviceInfo", "BIND", whrStr);
}
6、數據改變命令語言,引用自定義函數
分別定義作為設備啟停信號的bool型變量,并分別用此變量作為數據改變命令語言的變量
7、運行
切換各開關狀態模擬設備開啟停止,點擊查詢可以查看設備狀態,如果設備已開啟卻未停止,點查詢后只會出現設備開始運行的時間。