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