关于IFIX历史报警数据存储与查询实例
一.ODBC服务的连接
开始-设置-控制面板-管理工具-数据源ODBC
选用户DNS-添加-选Microsoft Access Driver(*.mdb)
数据源名:Myalarm
选(或创建)数据库名:Alarm.mdb, 文件类型:Access,驱动器D:
连接池-禁止
二.系统SCU的配置
SCU-IFIX-配置-报警-报警ODBC服务,启动-修改-
区域(A):从报警区域数据库中选择- CLQS-ALM-增加-确定
配置:数据库类型:Access
数据库标识符:Myalarm
列配置:选9项
现在创建表:FIXALARMS(默认表名)
其它默认-确定
三.控件的引用
1.日期时间控件
典型装VB6.0后, 双击选Microsoft date and time picker控件
日期控件-属性-格式:1-dtpShortDate,有效前不打勾。其它默认,
时间控件-属性-格式:2-dtpTime, 有效前不打勾。其它默认
2.vxData控件(数据管道)
IFIX4.0工具箱底部vxData图标
右键-属性vxData对象-
提供者:Microsoft OLE DB Provider for ODBC Drivers
数据库:DNS名:Myalarm,用户名 密码 选项均空---测试连接-测试连接成功-确定
记录源:命令类型:SQL命令
应用-确定
3.vxGrid控件(显示)
工具箱底部vxGrid图标
选控件 vxGrid1-右键-动画-高级-高级动画配置-行为-ADORecords-动画打勾
数据源:报警记录一览表.vxData1.ADORecords
数据转换:对象
四.VBA脚本的编写
1.初始化脚本代码
'初始化设置
Private Sub CFixPicture_Initialize()
'设定默认开始时间
Me.DTPFromDate = DateAdd("d", -1, Now)
Me.DTPFromTime = ("00:00:00")
'设默认结束时间
Me.DTPEndDate = Now
Me.DTPEndTime = Now
'设置时间
'vxData1.QP1 = Format(Me.DTPFromDate.Value, "yyyy-MM-DD") & " " & Format(Me.DTPFromTime.Value, "HH:MM:SS")
'vxData1.QP2 = Format(Me.DTPEndDate.Value, "yyyy-MM-DD") & " " & Format(Me.DTPEndTime.Value, "HH:MM:SS")
End Sub
2. 查询按扭CmbSearch代码如下:
'开始查询
Private Sub CmbSearch_Click()
'连接自动刷新
Me.vxData1.AutoRefresh = True
'Format函数用于设定时间格式
vxData1.QP1 = Format(Me.DTPFromDate.Value, "yyyy-MM-DD") & " " & Format(Me.DTPFromTime.Value, "HH:MM:SS")
vxData1.QP2 = Format(Me.DTPEndDate.Value, "yyyy-MM-DD") & " " & Format(Me.DTPEndTime.Value, "HH:MM:SS")
'设定查询内容
'从数据库中查询符合时间段的数据
Me.vxData1.SQLCommand = "SELECT *FROM FIXALARMS WHERE" & _
"(FIXALARMS.ALM_NATIVETIMEIN >= {ts 'QP1'})AND(FIXALARMS.ALM_NATIVETIMELAST <= {ts 'QP2'})"
'刷新数据
Me.vxData1.Refresh
Me.vxGrid1.Refresh
End Sub
3. 完整的VBA按扭代码如下:
'初始化设置
Private Sub CFixPicture_Initialize()
'设定默认开始时间
Me.DTPFromDate = DateAdd("d", -1, Now)
Me.DTPFromTime = ("00:00:00")
'设默认结束时间
Me.DTPEndDate = Now
Me.DTPEndTime = Now
'设置时间
'vxData1.QP1 = Format(Me.DTPFromDate.Value, "yyyy-MM-DD") & " " & Format(Me.DTPFromTime.Value, "HH:MM:SS")
'vxData1.QP2 = Format(Me.DTPEndDate.Value, "yyyy-MM-DD") & " " & Format(Me.DTPEndTime.Value, "HH:MM:SS")
End Sub
Private Sub CFixPicture_KeyDown(ByVal KeyCode As Long, ByVal Shift As Long, ContinueProcessing As Boolean)
End Sub
'开始查询
Private Sub CmbSearch_Click()
'连接自动刷新
Me.vxData1.AutoRefresh = True
'Format函数用于设定时间格式
vxData1.QP1 = Format(Me.DTPFromDate.Value, "yyyy-MM-DD") & " " & Format(Me.DTPFromTime.Value, "HH:MM:SS")
vxData1.QP2 = Format(Me.DTPEndDate.Value, "yyyy-MM-DD") & " " & Format(Me.DTPEndTime.Value, "HH:MM:SS")
'设定查询内容
'从数据库中查询符合时间段的数据
Me.vxData1.SQLCommand = "SELECT *FROM FIXALARMS WHERE" & _
"(FIXALARMS.ALM_NATIVETIMEIN >= {ts 'QP1'})AND(FIXALARMS.ALM_NATIVETIMELAST <= {ts 'QP2'})"
'刷新数据
Me.vxData1.Refresh
Me.vxGrid1.Refresh
End Sub
以上工作结束后保存,退出。重新启动IFIX4.0,运行后即可使用
-
-
-
-
shengjinli | 当前状态:离线
总积分:259 2025年可用积分:0
注册时间: 2007-12-07
最后登录时间: 2009-01-05
-
-
shengjinli 发表于 2008/1/26 7:57:25
引用 shengjinli 2008/1/26 7:57:25 发表于2楼的内容
-