您的位置:控制工程论坛网论坛 » 教程与手册 » 关于IFIX历史报警数据存储与查询

APK

APK   |   当前状态:离线

总积分:82  2025年可用积分:0

注册时间: 2008-01-23

最后登录时间: 2009-04-25

空间 发短消息加为好友

关于IFIX历史报警数据存储与查询

APK  发表于 2008/1/26 7:57:25      1156 查看 1 回复  [上一主题]  [下一主题]

手机阅读

关于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, 有效前不打勾。其它默认



2vxData控件(数据管道)


IFIX4.0工具箱底部vxData图标


右键-属性vxData对象-


  提供者:Microsoft OLE DB Provider for ODBC Drivers


  数据库:DNS名:Myalarm,用户名 密码 选项均空---测试连接-测试连接成功-确定


  记录源:命令类型:SQL命令


应用-确定 


3vxGrid控件(显示)


工具箱底部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,运行后即可使用


 


 

                                        2008-1-25    QUANFENG-TONG 
1楼 0 0 回复
总共 , 当前 /