Id, "CortrolLog", "CortrolLog" ); //写操作纪录
ELSE
IF DL_START.Name=="NULL" THEN
DL_STOP=0;
Record=StringRight( DL_STOP.Name ,StringLen( DL_STOP.Name )-7 );
SQLSelect( ConnectionId, "COMM", "COMMENT", "device_id="+"’"+Record + "’" , "" );
SQLFirst( ConnectionId );
Record=StringTrim( COM, 3 );
Record=StringLeft( Record, StringLen( Record )/2 );
SQLEnd( ConnectionId );
www.it168.com
SQLInsert( ConnectionId, "CortrolLog", "CortrolLog" );
ELSE
DL_START=1;
Recor
d=StringRight( DL_START.Name ,StringLen( DL_START.Name )-7 );
SQLSelect( ConnectionId, "COMM", "COMMENT", "device_id="+"’"+Record + "’" , "" );
SQLFirst( ConnectionId );
Record=StringTrim( COM, 3 );
Record=StringLeft( Record, StringLen( Record )/2 );
SQLEnd( ConnectionId );
SQLInsert( ConnectionId, "CortrolLog", "CortrolLog" );
ENDIF;
ENDIF;
2.4数据库的应用
系统中的IBM 服务器作为数据存储和发布的服务器,安装了SQL SERVER 2000,系统的报警历史记录和操作记录以及设备档案都存放在名为“DL” 的数据库中。
2.4.1 ODBC的连接
INTOUCH 通过ODBC 访问SQL SERVER,在ODBC 中建立名为“DL”的用户DSN,在INTOUCH 中用语句:
SQLConnect( ConnectionId, "DSN=DL");
建立连接,若连接成功则ConnectionId > 0 。在执行每一条SQL 语句时都会有一个返回值,若返回值为0 则表示执行成功,否则表示与数据库连接不正常,需重新建立连接。为了时刻检测与数据库服务器的连接情况,在应用程序脚本中每5 秒钟执行一条查询语句:
IF ResultCode = = 0 THEN
ResultCode = SQLSelect( ConnectionId , "SYSUSERS" ,"SYSUSERS","UID=0", "" );
ENDIF;
同时在条件脚本中判断ResultCode (即返回值)若ResultCode <> 0 则断开连接:
SQLDisconnect( ConnectionId );
ConnectionId = 0;
SHOW “通讯状态”;
打开“通讯状态”画面,显示信息“与服务器连接失败!”及“重试”、“取消”两个按钮。按“重试”,置位系统将每20 秒进行一次尝试连接:
IF RETRY = = 1 THEN
ResultCode = SQLConnect( ConnectionId, "DSN=DL");
ENDIF;
直到ResultCode = 0 为止。
尝试连接时系统将变得很忙。若想取消连接,则按“取消”按钮,系统将不再与服务器连接,对现场 的监控可以正常进行,但操作与报警记录都将不写入服务器(数据发布不受影响)。希望重新连接服务器时,只需在“通讯状态”画面下按“重试”按钮即可。
2.4.2 绑定列表
在全点INTOUCH 中需建立四个绑定列表:“alarmhis”,“cortrolog”,“device”,“sysusers”分别对应数据库中的表格。“sysusers”只是为了检查ODBC 连接用的,并无其他用处。在每个列表中用变量与各字段相对应,如“cortrolog” 中变量“DATETIME” 对应字段“DATETIME” ;变量“$OPERATER”对应字段“USERNAME” ;变量“RECORD”对