iFix中如何实现EXCEL报表
报表控件应用-iFix
报表控件应用-iFix第一部分数据存储[1] 运行iFix演示程序,添加数字量输出块(DO)DataLogTrig、DataLogEnable。
[2] 工作台开发环境中新建画面DataLog,右键点击选择编辑脚本添加程序:Fix32.Fix.DataLogEnabled.F_CV = 1[3] 菜单中选择插入〉OLE对象,对象类型列表中选择hmiReportDataLog.CtrlX插入到换面中,点击控件右键菜单中选择动画〉配置〉杂项,将控件的属性DataLogEnabled链接数据块DATALOGENABLED ,属性DataLogTrig 链接数据块 DATALOGTRIG,数据转换选择”对象”。
可将控件参数TagValue001- T agValue120链接模拟量数据块的实时值(Fix32.FIX.IFIX1_BATCH_BULKFLOW.F_CV)作为采样点,控件参数TagDesc001- T agDesc120链接模拟量数据块的描述信息(Fix32.FIX.IFIX1_BATCH_BULKFLOW.A_DESC),数据块的描述信息不能为空,不能以数字开头,不能包含运算符号。
[4] 点击控件右键菜单中选择属性,将控件属性DataLogInterval 设为1-7的整数值将控制控件的采样周期为5秒钟至1小时,设为8时停止自动采样。
画面中添加一个按钮[触发手动存储]按钮,按下时将数据块DATALOGTRIG 置1,释放时置0。
[5] 保存画面并切换至运行状态,选中[显示数据]可见设置的数据点名称和iFix传入的变量数据,按控件中[创建数据表]按钮,再按[存储数据]按钮,可在数据库中建立一个名为hmiDataLog的数据表并存储一行数据。
自动状态下控件按照选定的采样周期存储数据。
画面中按[触发手动存储]按钮触发一次数据存储,可实现由外部状态控制数据存储。
[6] 报表软件程序组中打开“数据检索”工具,选择数据表名hmiDataLog,可选字段中选择时标字段TSTAMP 和其它的数据点字段,按[数据检索]按钮可从数据库查询出已存入的历史数据。
iFIX报表制作
Байду номын сангаас
地 满 足 设 计 要 求 。 通 过 iX 集 成 的 V A 语 言 对 E c l 象 编 F I B x e对
程, 合A 结 DO 技 术 对 数 据 库 进 行 操 作 , 通 过 iI 内部 D A 并 FX r
这 里 通 过 一 个 简 单 的例 子 ,阐 明 如 何 在 iI 中 使 用 E c l F X xe 对 象 和 AD 技 术 实 现 报 表 的制 作 。在 iI 开 发 一 套 配 电 网 O FX上 监 控 系统 ,采 用 S ev r 为 历 史 数 据 库 。数 据 库 名 称 为 QL S re 作
K y r siI . B E c l O e wo d : X V A,x e , F AD
由于 iI 自带 的 报 表 在应 用 中 比较 烦 琐 而 且 存 在一 定 的局 FX 限 性 ,在 实 际 的 工程 应 用 中 i! 般 的报 表 制 作 方 法 不 能 较 好 FX一
2 具 体 实 现 步 骤
控 件 完 成 报 表数 据显 示 , 增 强报 表功 能 , 高 灵 活性 。 可 提
1 相 关 技 术 简 介
表 格 ,aam ” 的各 字 段 名 如 下 : “ lr 表
日期 线路 名称
11V A与 E c l 合 编 程 . B x e联 V A( iu IB s o pi t n ) 内 嵌 在 iI 中 的 B Vs a a i frAp lai s 是 c c o FX
FX报 表 制作 I
iI FX报表制作
IFIX连接SQL读写数据和制作excel报表图文教程
IFIX连接SQL读写数据和制作excel报表图文教程IFIX连接SQL数据库、制作excel报表详细教程一、 IFIX连接SQL数据库读写数据IFIX连接SQL数据库有多种方法,其中最为方便的两种方法是:(1)使用IFIX本身为SQL数据库提供的接口SQT和SQD;(2)VB+ADO。
下面分别介绍着两种方法的实现步骤。
1、使用SQT和SQD读写SQL数据库1.1 安装SQL2008(只列出关键步骤,其余直接点击“下一步”或“安装”) 打开SQL安装中心,点击“安装”;SQL2008简体中文版安装包下载链接:点击“全新SQL Server独立安装或向现有安装添加功能”;点击“输入产品密匙”,点击“下一步”:(根据版本选择)sql server2008密钥Developer: PTTFM-X467G-P7RH2-3Q6CG-4DMYBEnterprise: JD8Y6-HQG69-P9H84-XDTPG-34MBBMicrosoftSQL Server 2008R2序列号密钥开发版32位:MC46H-JQR3C-2JRHY-XYRKY-QWPVM开发版64位:FTMGC-B2J97-PJ4QG-V84YB-MTXX8工组版:XQ4CB-VK9P3-4WYYH-4HQX3-K2R6QWEB版:FP4P7-YKG22-WGRVK-MKGMX-V9MTM数据中心版32位:PTTFM-X467G-P7RH2-3Q6CG-4DMYB数据中心版64位:DDT3B-8W62X-P9JD6-8MX7M-HWK38企业版32位:R88PF-GMCFT-KM2KR-4R7GB-43K4B企业版64位:GYF3T-H2V88-GRPPH-HWRJP-QRTYB标准版32位:CXTFT-74V4Y-9D48T-2DMFW-TX7CY标准版64位:B68Q6-KK2R7-89WGB-6Q9KR-QHFDW功能选择界面,选择安装全部功能,点击“下一步”;进入实例配置界面,选择默认实例,点击“下一步”;进入服务器配置界面,启动类型均选为“自动”;点击“对所有SQL Server 服务使用相同的账户”,在弹出的界面中选择第一个账户,密码不用填;返回服务器配置界面点击下一步;进入数据库引擎配置界面,选择混合模式,输入自己设定的密码,点击“添加当前用户”,点击下一步,直至安装完成,关闭安装中心。
EXCEL在IFIX软件的报表实现
( 黑龙江省 科学 院 自动化研究所 , 黑龙江 哈 尔滨 1 0 9 ) 0 0 5
摘 要 : 文 介 绍 了一 种 将 办 公软 件 E E 本 XC L与 I I 实 现 数 据 报 表 的 方 法 , 用 E E FX 利 XC L和 I I 软 件 对 OL FX E的 支持 , 结 合 VB 脚 并 A 本语 言 , 活 的扩 展 了 I I 报 表 功 能 , 在 工 业 生 产 重 要 的抄 表 工 作提 供 了一 个 思 路 。 灵 F X的 为 关键 字 : I VB E E 报 表 I X; A; XC L; F 中 图分 类 号 : P l .2 T 3 15 文 献 标 识 码 : B 文章 编号 :0 3 2 12 1)6 0 8 0 10 7 4 (0 10 0 8 — 3
2 解 决 思 路
O E D /D C L B O B 数据 源
了报表 的功 能 , 里采取 的是时 时采集数 据并且保 存到 这
报表 的方法 , 报表生成代码 已经集成在 ii f x系统 内, 这样 建立 了与数据无 关的操作 , 代码会 随 I I F X启动运 行 , 报 表生成不受限制。E cl V A 同时支持 , x e对 B 利用 E cl x e 功
F X 数据 库 I
的 , 们具 有相 似 的语 言结 构 。它 保 留了绝 大部分 VB 它 的功 能 , 使可编程应 用软件得到完美 的实 现 , 它作为一种
图 1 VB A对象关 系
收 稿 日期 : 11 0 —2 20 — 2 8
Hale Waihona Puke 通用 的宏语 言可被 所有的 Mir s f c o ot可编程应用软件所 共享 。为 自定 义功 能提供 了完整 开发环 境 。经过 优化 ,
EXCEL在IFIX软件的报表实现
EXCEL在IFIX软件的报表实现巩伟;宋勇江【期刊名称】《自动化技术与应用》【年(卷),期】2011(030)006【摘要】本文介绍了一种将办公软件EXCEL与IFIX实现数据报表的方法,利用EXCEL和IFIX软件对OLE的支持,并结合VBA脚本语言,灵活的扩展了IFIX的报表功能,为在工业生产重要的抄表工作提供了一个思路.%This article introduces a method which combines office software Excel and IF 1X to complete data reports, uses EXCEL and IF1X software to support OLE. And combines with VBA Scripting language to extend IF1X function of data reports flexibelly. It provides an idea for important meter reading in industrial production.【总页数】3页(P88-90)【作者】巩伟;宋勇江【作者单位】黑龙江省科学院自动化研究所,黑龙江哈尔滨150090;黑龙江省科学院自动化研究所,黑龙江哈尔滨150090【正文语种】中文【中图分类】TP311.52【相关文献】1.利用EXCEL完善IFIX监控软件的报表功能 [J], 杨永奇2.应用Excel工具软件实现工程统计报表的自动生成 [J], 张相龙3.利用iFIX监控软件实现数据采集和输出报表 [J], 吴坚兰;崔绍文;高连艳;温艳艳;孙合明4.利用Microsfot Excel实现组态软件复杂报表方法的研究 [J], 潘礼军5.利用Microsfot Excel实现组态软件复杂报表方法的研究 [J], 潘礼军;因版权原因,仅展示原文概要,查看原文内容请购买。
iFix中如何实现EXCEL报表
iFix中如何实现EXCEL报表.txt心脏是一座有两间卧室的房子,一间住着痛苦,一间住着快乐。
人不能笑得太响,否则会吵醒隔壁的痛苦。
iFix中如何实现EXCEL报表在VBA中引用Microsoft Excel 11.0 Object Library和Microsoft ADO 6.0 Library。
在画面中添加个按钮。
复制以下代码:‘----------开始复制(不包括此行)--------------Option ExplicitDim rsADO As ADODB.RecordsetDim cnADO As ADODB.ConnectionPrivate Sub Command1_Click()Dim StrDir As StringStrDir = "E:\"Dim i As LongDim Sql As StringSql = "SELECT * FROM THISNODE"Set cnADO = New ADODB.ConnectionSet rsADO = New ADODB.RecordsetcnADO.CcnADO.OpenrsADO.CursorLocation = adUseClientrsADO.Open Sql, cnADO, adOpenDynamic, adLockUnspecified, -1If rsADO.RecordCount <= 0 ThenMsgBox "无数据!", vbOKOnly + vbInformation, "信息..."Set cnADO = NothingSet rsADO = NothingExit SubEnd IfDim xlApp As ObjectDim xlBook As ObjectDim xlSheet As ObjectSet xlApp = New Excel.ApplicationxlApp.DisplayAlerts = FalsexlApp.Visible = FalseSet xlBook = xlApp.Workbooks.Open(StrDir & "\报表.xls")'需要文件(E:\报表.xls) Set xlSheet = xlBook.Worksheets(1)For i = 1 To rsADO.RecordCountxlSheet.Cells(i, 1) = rsADO.Fields(1).Value & ""xlSheet.Cells(i, 2) = rsADO.Fields(2).Value & ""xlSheet.Cells(i, 3) = rsADO.Fields(3).Value & ""xlSheet.Cells(i, 4) = rsADO.Fields(4).Value & ""Next ixlApp.Visible = TruexlApp.DisplayAlerts = FalseSet xlSheet = NothingSet xlBook = NothingSet xlApp = NothingSet cnADO = NothingSet rsADO = NothingEnd Sub‘----------结束复制(不包括次行)--------------注意:1.iFix历史数据库只支持读90天的数据,在SQL语句中限定时间即可。
IFIX通过VB脚本调用ACCESS数据库制作报表
IFIX通过VB脚本调用ACCESS数据库数据制作报表作者的前一篇文章已经详细介绍了,如何通过调度将数据保存在access数据库中,今天分享一下,通过脚本调用数据库中的数据形成报表。
步骤01:建立报表模板1.使用Excel根据实际报表样式建立报表模板2.将报表模板另存为(*.htm,*.html)格式文件,文件打开如下图所示:步骤02:新建报表查询画面1.通过IFIX工具箱中的插入OLE对象,插入控件Microsoft date and timecontrol,控件属性中,将customformat值修改为yyyy/MM/dd HH:mm:ss,控件名称默认为DTPicker1;2.同样通过IFIX工具箱中的插入OLE对象,插入Microsoft Web Broswer控件,用于显示报表;3.通过工具箱插入按钮,用于进行报表查询;如下图所示:步骤03:VB脚本开发,调用ACCESS数据库中的历史数据,填写到报表模板中;具体脚本如下:Private Sub CommandButton4_Click()'On Error Resume NextDim OutReportFile As String '定义打开的报表模板路径和名称变量Dim InReportFile As String '另行保存报表的路径和名称变量Dim cn As ADODB.ConnectionDim res As ADODB.RecordsetDim StrSQL As StringDim i As IntegerDim row As IntegerDim MyDateMyDate = Format(Now(), "yyyy-MM-dd")Dim msexcel As Excel.ApplicationSet msexcel = CreateObject("Excel.Application")With msexcel.Visible = False '如为FALSE,则不显示EXCEL。
写IFIX实时数据到Excel
写IFIX实时数据到ExcelDescription 描述Inserting FIX Dynamics data into an Excel worksheet.把FIX数据写入EXCEL工作表ResolutionThe following procedure will enable you to insert FIX Dynamics data into an Excel worksheet: 下面的程序可以让你把FIX数据写到EXCEL工作表中' Declare necessary API routines: 定义必要的APIPrivate Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As Long) As LongPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongSub DetectExcel()' Procedure dectects a running Excel and registers it.生成运行一EXCEL工作表并保存之Const WM_USER = 1024Dim hwnd As Long' If Excel is running this API call returns its handle.如果Excel运行这个API调用返回其句柄,hwnd = FindWindow("XLMAIN", 0)If hwnd = 0 Then ' 0 means Excel not running.0表示EXCEL没有运行Exit SubElse' Excel is running so use the SendMessage API function to enter it in the Running Object Table. EXCEL运行就用API的SendMessage功能发送到运行的工作表中SendMessage hwnd, WM_USER + 18, 0, 0End IfEnd SubPrivate Sub CommandButton2_Click()Dim msexcel As Excel.ApplicationSet msexcel = CreateObject("Excel.Application")With msexcel.Visible = True.Workbooks.Open "d:\fix32\Test1.xls", , FalseEnd WithEnd SubPrivate Sub CommandButton3_Click()Dim MyXL As Object ' Variable to hold reference to Microsoft Excel.Dim ExcelWasNotRunning As Boolean ' Flag for final release.' Test to see if there is a copy of Microsoft Excel already running.On Error Resume Next ' Defer error trapping.' Getobject function called without the first argument returns a reference to an instance of the application. If the application isn't running, an error occurs. Note the comma used as the first argument placeholder.Set MyXL = GetObject(, "Excel.Application")If Err.Number <> 0 Then ExcelWasNotRunning = TrueErr.Clear ' Clear Err object in case error occurred.' Check for Excel. If Excel is running,enter it into the Running Object table.DetectExcel'Set the object variable to reference the file you want to see.Set MyXL = GetObject("d:\fix32\test1.XLS")' Show Microsoft Excel through its Application property. Then show the actual window containing the file using the Windows collection of the MyXL object reference.MyXL.Application.Visible = TrueMyXL.Parent.Windows(1).Visible = True' Do manipulations of your file here.With MyXL.Application.ActiveWorkbook.ActiveSheet.Select.Goto reference:=.Range("D4").Selection = Fix32.Johnski2.AI1.F_CVEnd With' If this copy of Microsoft Excel was not already running when you started, close it using the Application property's Quit method. Note that when you try to quit Microsoft Excel, the Microsoft Excel title bar blinks and Microsoft Excel displays a message asking if you want to save any loaded files.If ExcelWasNotRunning = True ThenMyXL.Application.QuitEnd IfSet MyXL = Nothing ' Release reference to the application and spreadsheet.End Sub。
有关iFIX软件报表生成的说明
有关iFIX软件报表生成的说明 iFIX软件可以通过内置的VBA借助EXCEL,ACCESS,Crystal Roport等软件生成报表。
本文通过 VBA+ADO+EXCEL 做一个具体的介绍。
1.V BA(Visual Basic for Application)VBA是iFIX完全内置的一个强有力的编程工具,可以使用户快速方便的生成自动的操作任务和过程自动化的解决方案。
IFIX的VBA工具包括以下特性:可操作所有列出的iFIX对象的属性,方法和事件支持多种数据源,包括iFIX过程数据库,任何OPC服务器,任何对象的属性和SQL数据库ODBC支持ActiveX控件支持VBA脚本生成向导及IFIX命令可以帮助你为常用任务自动生成程序代码第三方控件的安全容器下面的程序代码就是在iFIX中建立一个新的EXCEL应用程序并打开报表模版。
Dim msexcel As Excel.ApplicationSet msexcel = CreateObject("Excel.Application")With msexcel.Visible = True.Workbooks.Open "e:\histdemo\FixReports.xls", ,False.ActiveWorkbook.ActiveSheet.Select.DisplayAlerts = False.Wait (Now() + 0.00002)End With2.A DO (ActiveX Data Object)ADO 是微软推出的最新的数据库访问方式。
它综合了微软早期推出的DAO及RDO的特性并取代了DAO及RDO。
ADO可以访问更多类型的数据库,并且可以通过ODBC(Open DataBase Connectivity)访问数据,但它的结构是建立在OLE DB Providers上。
IFIX软件安装完毕以后,在控制面板的ODBC数据源中会增加两个系统DSN:FIX Dynamics Historical Data iFIX历史数据源FIX Dynamics Real Time Data iFIX实时数据源ADO可以通过访问这两个数据源来直接操作iFIX历史数据库和实时数据库。
写IFIX实时数据到Excel
写IFIX实时数据到ExcelDescriptionInserting FIX Dynamics data into an Excel worksheet.ResolutionThe following procedure will enable you to insert FIX Dynamics data into an Excel worksheet:' Declare necessary API routines:Private Declare Function FindWindow Lib "user32" Alias _ "FindWindowA" (ByVal lpClassName As String, _ByVal lpWindowName As Long) As LongPrivate Declare Function SendMessage Lib "user32" Alias _ "SendMessageA" (ByVal hwnd As Long, _ByVal wMsg As Long, _ByVal wParam As Long, _lParam As Any) As LongSub DetectExcel()' Procedure dectects a running Excel and registers it.Const WM_USER = 1024Dim hwnd As Long' If Excel is running this API call returns its handle.hwnd = FindWindow("XLMAIN", 0)If hwnd = 0 Then ' 0 means Excel not running.Exit SubElse' Excel is running so use the SendMessage API' function to enter it in the Running Object Table.SendMessage hwnd, WM_USER + 18, 0, 0End IfEnd SubPrivate Sub CommandButton2_Click()Dim msexcel As Excel.ApplicationSet msexcel = CreateObject("Excel.Application")With msexcel.Visible = True.Workbooks.Open "d:\fix32\Test1.xls", , FalseEnd WithEnd SubPrivate Sub CommandButton3_Click()Dim MyXL As Object ' Variable to hold reference to Microsoft Excel. Dim ExcelWasNotRunning As Boolean ' Flag for final release.' Test to see if there is a copy of Microsoft Excel already running. On Error Resume Next ' Defer error trapping.' Getobject function called without the first argument returns a' reference to an instance of the application. If the application isn't ' running, an error occurs. Note the comma used as the first argument ' placeholder.Set MyXL = GetObject(, "Excel.Application")If Err.Number <> 0 Then ExcelWasNotRunning = TrueErr.Clear ' Clear Err object in case error occurred.' Check for Excel. If Excel is running,' enter it into the Running Object table.DetectExcel'Set the object variable to reference the file you want to see.Set MyXL = GetObject("d:\fix32\test1.XLS")' Show Microsoft Excel through its Application property. Then' show the actual window containing the file using the Windows' collection of the MyXL object reference.MyXL.Application.Visible = TrueMyXL.Parent.Windows(1).Visible = True' Do manipulations of your file here.With MyXL.Application.ActiveWorkbook.ActiveSheet.Select.Goto reference:=.Range("D4").Selection = Fix32.Johnski2.AI1.F_CVEnd With' If this copy of Microsoft Excel was not already running when you' started, close it using the Application property's Quit method.' Note that when you try to quit Microsoft Excel, the Microsoft Excel ' title bar blinks and Microsoft Excel displays a message asking if you ' want to save any loaded files.If ExcelWasNotRunning = True ThenMyXL.Application.QuitEnd IfSet MyXL = Nothing ' Release reference to the application and spreadsheet. End Sub在IFIX中如何显示用户信息在FIX32产品中,FIX内含一系列系统变量,存储当前系统信息,包括当前用户的注册信息,如#GS_。
报表控件应用-iFix
第一部分数据存储[1] 运行iFix演示程序,添加数字量输出块(DO)DataLogTrig、DataLogEnable。
[2] 工作台开发环境中新建画面DataLog,右键点击选择编辑脚本添加程序:Fix32.Fix.DataLogEnabled.F_CV = 1[3] 菜单中选择插入〉OLE对象,对象类型列表中选择hmiReportDataLog.CtrlX插入到换面中,点击控件右键菜单中选择动画〉配置〉杂项,将控件的属性DataLogEnabled链接数据块 DATALOGENABLED ,属性DataLogTrig 链接数据块 DATALOGTRIG,数据转换选择”对象”。
可将控件参数TagValue001- TagValue120链接模拟量数据块的实时值(Fix32.FIX.IFIX1_BATCH_BULKFLOW.F_CV)作为采样点,控件参数TagDesc001- TagDesc120链接模拟量数据块的描述信息(Fix32.FIX.IFIX1_BATCH_BULKFLOW.A_DESC),数据块的描述信息不能为空,不能以数字开头,不能包含运算符号。
[4] 点击控件右键菜单中选择属性,将控件属性DataLogInterval设为1-7的整数值将控制控件的采样周期为5秒钟至1小时,设为8时停止自动采样。
画面中添加一个按钮[触发手动存储]按钮,按下时将数据块DATALOGTRIG 置1,释放时置0。
[5] 保存画面并切换至运行状态,选中[显示数据]可见设置的数据点名称和iFix传入的变量数据,按控件中[创建数据表]按钮,再按[存储数据]按钮,可在数据库中建立一个名为hmiDataLog的数据表并存储一行数据。
自动状态下控件按照选定的采样周期存储数据。
画面中按[触发手动存储]按钮触发一次数据存储,可实现由外部状态控制数据存储。
[6] 报表软件程序组中打开“数据检索”工具,选择数据表名hmiDataLog,可选字段中选择时标字段TSTAMP 和其它的数据点字段,按[数据检索]按钮可从数据库查询出已存入的历史数据。
iFIX使用脚本生成EXCEL报表
作者: lostCity 复制收藏iFIX使用脚本生成EXCEL报表2006-07-23重新修改过的报表脚本注意中文单引号要换成英文的(因为网页支持有问题,故替换处理)附录文件为时间调度报表代码:下载附件另存为.rar文件‘注释: 1。
该程序需要安装ADO 2.0目标库并在本机注册‘2。
Microsoft ActiveX Data Objects 2.1 Library 必须被引用(Office 2000)‘3。
Microsoft Excel 9.0 object libraries 必须被引用(Office 2000)‘4。
划===处可根据具体报表修改Dim strQueryAvg As StringDim c As IntegerDim r As IntegerDim Intyexcel As Excel.ApplicationDim MyDate, MyMonth, MyDay, MyHour, MyMinute, MySecondDim StartTime, EndTime, Duration, DisplayDay, DisplayMonth As String‘++===================================================================‘报表中的TAGDim Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 As StringDim Items As IntegerTag1 = "LV001"Tag2 = " "Tag3 = " "Tag4 = " "Tag5 = " "Tag6 = " "Tag7 = " "Tag8 = " "‘从历史库中取得域项,2 - DATA TIME, V ALUE, TAG 共三项Items = 2‘--====================================================================MyDate = Now()MyYear = Year(MyDate)MyMonth = Month(MyDate)MyDay = Day(MyDate)MyHour = Hour(MyDate)MyMinute = Minute(MyDate)MySecond = Second(MyDate)‘修改by lostcity 2006-7-23 2:17‘注释部分为前一天数据‘StartTime = MyYear & "-" & MyMonth & "-" & MyDay - 1 & " " & "00:00:00"‘EndTime = MyYear & "-" & MyMonth & "-" & MyDay - 1 & " " & "23:00:00"‘当天00:00:00至当前时间的数据StartTime = Format(MyDate, "yyyy-mm-dd") & " 00:00:00"EndTime = Format(MyDate, "yyyy-mm-dd hh:MM:ss")‘++=================================================================== =======‘查询,根据报表修改‘"WHERE MODE = ‘A VERAGE‘ and (TAG=‘" & Tag1 & "‘ or TAG=‘" & Tag2 & "‘" & _‘" or TAG=‘" & Tag3 & "‘ or TAG=‘" & Tag4 & "‘ or TAG=‘" & Tag5 & "‘" & _‘" or TAG=‘" & Tag6 & "‘ or TAG=‘" & Tag7 & "‘ or TAG=‘" & Tag8 & "‘)" & _‘"and INTERV AL = ‘01:00:00‘ and " & _‘"(DATETIME >= {ts ‘" & StartTime & "‘} and " & _‘"DATETIME <= {ts ‘" & EndTime & "‘})"strQueryAvg = "Select DA TETIME, V ALUE, TAG FROM FIX " & _"WHERE MODE = ‘A VERAGE‘ and (TAG=‘" & Tag1 & "‘ or TAG=‘" & Tag2 & "‘" & _" or TAG=‘" & Tag3 & "‘ or TAG=‘" & Tag4 & "‘ or TAG=‘" & Tag5 & "‘" & _" or TAG=‘"& Tag6 & "‘ or TAG=‘" & Tag7 & "‘ or TAG=‘" & Tag8 & "‘) " & _"and INTERV AL = ‘00:01:00‘ and " & _"(DATETIME >= {ts ‘" & StartTime & "‘} and " & _"DATETIME <= {ts ‘" & EndTime & "‘})"‘--==================================================================== =======Dim cnADO As New ADODB.ConnectionDim rsADO As RecordsetSet cnADO = New ADODB.ConnectioncnADO.ConnectionString = "DSN = FIX Dynamics Historical Data; UID = ; PWD = ;"cnADO.Open "FIX Dynamics Historical Data", "", ""Set rsADO = New ADODB.RecordsetrsADO.Open strQueryAvg, cnADO, adOpenForwardOnly, adLockBatchOptimisticr = 1Set Intyexcel = New Excel.ApplicationIntyexcel.Visible = True‘++=================================================================== =========‘打开的报表文件名Dim OutReportFile As StringDim InReportFile As StringInReportFile = "C:HIST1"Intyexcel.Workbooks.Open InReportFile & ".XLS"Intyexcel.Sheets("Sheet1").SelectIntyexcel.Columns("A:Z").SelectIntyexcel.Selection.ClearContentsIntyexcel.Range("A1").SelectWhile rsADO.EOF <> TrueWith Intyexcel.Worksheets(1)For c = 0 To ItemsIf rsADO(c) <> "" Then .Cells(r, c + 1).Value = rsADO(c)Next cr = r + 1rsADO.MoveNextEnd WithWendIntyexcel.Sheets("Sheet1").Select‘Intyexcel.ActiveSheet.PageSetup.Orientation = xlPortrai t ‘xlLandscape‘Intyexcel.ActiveSheet.PageSetup.PaperSize = xlPaperA4Intyexcel.ActiveSheet.PrintOutIntyexcel.DisplayAlerts = FalseIntyexcel.ActiveWorkbook.SaveOutReportFile = InReportFile & "_00" & MyMonth & MyDayIntyexcel.ActiveWorkbook.SaveAs OutReportFileIntyexcel.QuitIntyexcel.DisplayAlerts = TrueSet Intyexcel = NothingSet cnADO = Nothing文章来自: 博客浙江()原文参考:/d-45684.html。
ifix报表制作文档
Ifix报表的实现本文档主要介绍Ifix 通过调度将报表数据按照一定要求存储到Access数据库中,并根据要求从其中提取数据,结合EXCELL的制表功能实现报表。
数据存入1.数据库的建立和数据关联方法:(1)直接在Microsoft office中建立Access文件。
(2)在控制面板里ODBC数据源管理器里关联数据库时创建Access数据库。
1.1数据库的建立(1)打开新建的Access文件,点击。
(2)创建一个,名字为ReportData的表。
在表名处右键鼠标点击Ifix时间调度触发调度中的VB脚本Access数据库报表显示创建表1.2数据库的关联用关联定义画面如下图。
在其中选择点击选择Microsoft Access Driver[*.mdb],再点击完成按钮,进入下边的窗口,在其中的数据源名(N)DSN (数据源名)名,不使用数据名。
2.时间调度的建立2.1在ifix里新建基于时间的调度,在Schedules新建一个调度文件,在Time Based Entries中创建一个调度,具体设置如下图:注意:iFIX 不支持使用与本地节点名相同名称的调度。
因此,不能创建与本地节点名相同的调度。
触发信息设置为continuous,间隔为1个小时,启动时间为第2分钟。
点击Vb Editor 将以下脚本写入Private Sub RW2REPORT_OnTimeOut(ByVal lTimerId As Long)Dim cn As ADODB.Connection '定义一个ADO方式的数据库连接Dim res As ADODB.Recordset '定义一个ADO方式的数据库记录集Dim StrSQL As StringSet cn = New ADODB.Connection '定义cn为新的ADO数据库连接Set res = New ADODB.Recordset '定义res为新的ADO数据库连接集cn.ConnectionString = "DSN=ReportSource;UID=;PWD=;" '定义cn的连接数据源为ReportSource 即ODBC中建立的ACCESS的数据源名cn.OpenStrSQL = "select * from ReportData Where 日期=#" & Date & "#" '使用SQL语句查找ReportData表中日期为Date的数据res.Open StrSQL, cn, adOpenKeyset, adLockOptimisticres.AddNew '添加一个新的记录res.Fields(0) = Date '在0列加入日期res.Fields(1) = Hour(Time) '在1列加入时间res.Fields(2) = Fix32.RW2.RW_Y0GBN11AP001_ZS.f_cv '在2列加入标签1res.Fields(3) = Fix32.RW2.RW_Y0GBN11AP002_ZS.f_cv '在3列加入标签2res.Update '保存记录Update(当Edit或AddNew方法完成后保存记录集) res.Close '关闭记录集cn.CloseSet res = NothingSet cn = NothingEnd Sub在vb2.2添加到FixBackgroundServer 任务打开SCU,点击如图所示:在文件名内查找FixBackgroundServer.exe文件添加后保存SCU文件。
IFIX系统日报月报的设计与实现
88 无线互联科技
来从IFIX历史数据库中读取数据生成日报和月报。当optMonth. Value = True && optDay.Value = False时,“生成报表”按 钮用CreatMonthReport()方法生成月报表并保存,反之调用 CreatDayReport()方法生成日报表并保存。 2.1 CreatDayReport()方法生成日报
(下转第91页)
设计分析·
在弱电机房设11台16路硬盘录像机、7台24口三级接入交换 机、1台24口二级接入交换机、150路视频分析单元、5台监控管 理主机、2台监控终端等,电视墙利用机场集中监控系统设备。
3 周界广播系统
广播系统由音频矩阵、监控管理主机、综合机箱、传输线 路及传输设备和室外扬声器组成。 3.1 室外扬声器选择和设置
IFIX系统日报月报的设计与实现
苟景卫 穆卫巍(中国石油长庆油田公司第二采气厂,陕西 榆林 719000)
摘 要:文章介绍了基于时间项调度和HDA两种方法实现报表的自动生成。对每种方法的设计与实现进行了详细的介绍并给出了每种方法的 部分核心代码。剖析了两种方法各自的优缺点并对运行效果进行了评价。 关键词:基于时间项调度;HDA;IFIX;PDB实时数据库
[参考文献]
[1]杨磊,李峰,田艳生.《闭路电视监控系统》.机械工业出版社,2004年 02月01日. [2]苏翼凯,冷鹿峰:.《高速光纤传输系统》.上海交通大学出版社,2009 年02月1日. [3]民用航空周界安全防范手册. [4]银川河东机场飞行区安全管理规范. [5]银川河东机场《飞行区周界监控、报警系统使用户使用手册》.
一种IFIX组态软件实现生产报表自动生成的方法
一种IFIX组态软件实现生产报表自动生成的方法作者:邹昊辰来源:《中国科技博览》2019年第05期[摘要]为了提高油田注入生产工作自动化程度和工作效率,利用IFIX软件和Excel对OLE的支持,并结合VBA脚本语言,灵活的扩展了IFIX的报表功能,实现注入生产报表的自动生成。
[关键词]生产报表、IFIX组态软件、Excel报表中图分类号:E231 文献标识码:A 文章编号:1009-914X(2019)05-0146-011现状分析目前,注入站自控系统采用上位机/PLC/现场仪表层次结构,采用PLC通过轮询的方式采集站内流量计、流量控制器、数字压力表及接触器的信号,并独立完成设备运行控制功能,通过上位机内安装的IFIX组态软件显示流程画面及设备状态、参数,对设备的控制通过向PLC 设置数据由PLC执行控制功能,上位机的运行与停止不会干扰系统的自动运行。
2研究思路自动化报表需要建立在注入站自控系统上,采用该系统iFIX自动化组态软件开发。
iFIX 组态软件是由美国通用公司开发的工业具有开发灵活拓展能力强等优点,报表生产软件采用iFIX组态软件功能有:(1)IFIX数据库通过读取PLC(pro-grammable logic controller可编程逻辑控制器),I/O 映象区中的现场仪表的数据,可实现现场数据的远程检测。
(2)在iFIX中内嵌VBA(VisualBasicforApplications)标准脚本语言,将微软的VBA脚本语言作为自己组态环境的开发语言,并支持OLE自动化功能。
(3)IFIX数据库支持VBA的读取操作,同时Excel也支持VBA的写入操作,通过VBA 可以实现读取IFIX数据库中的数据向Excel的写入。
(4)IFIX组态软件可以与PLC和Excel相结合,通过开发生成报表自动生成软件,可以实现生产参数自动采集、计算、写入和注入生产报表自动生成,从而实现了注入系统生产报表的自动化。
IFIX报表
IFIX报表编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(IFIX报表)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为IFIX报表的全部内容。
IFIX报表IFIX报表常规的做法是采用IFIX内嵌的VBA语言,借助于OFFICE自带的ACCESS和EXCEL 来做的。
例如我们要在IFIX画面上通过点击一按钮来察看某一天的数据,假如这有三个模拟量如tag1,tag2,tag3,数据间隔一小时归一次档,它主要分为四步:一、创建一个ACCESS数据库如ReportDataBase。
mdb,用来存放报表所需的数据。
然后就在这个数据库中建立一个表如ReporData,这样IFIX 就能以一定的时间间隔将数据写入此数据库刚才创建的表中。
ReportData的结构如下:字段名类型日期日期/时间tag1 数值tag2 数值tag3 数值二、创建ODBC数据源,用于IFIX与上步已建立的数据库和表进行联系。
方法:控制面板->管理工具->ODBC数据源,打开ODBC数据源管理器,建立一个“系统DSN",点击“添加”,双击“Microsoft Access Drivers (*.mdb)”,出现“ODBC Microsoft Access 安装"对话框。
数据源名:MyReport 注:此名是任意的字符组合,但不能与数据库重名。
数据库: ReportDataBase。
mdb,点击‘选择‘按钮选择第一步创建的Access 数据库。
点击“完成”,退出控制面板三、在IFIX 中创建一个“基于时间的调度",如图名称:任意合法的字符组合触发信息:连续间隔:1小时详细代码如下:点击“VB编辑器“进入VB编辑器在“工具”菜单—〉引用“Microsoft ActiveX Data Objects x.x Library"Private Sub FixTimer3_OnTimeOut(ByVal lTimerId As Long)Dim cn As ADODB。
excel使用if函数和名称管理器功能怎么制作动态报表
excel使用if函数和名称管理器功能怎么制作动态报表动态报表的制作是比较复杂的,主要利用的if函数和名称管理器功能,excel中想要制作一个残品销售动态柱形图,使用if函数和名称管理器功能制作动态报表。
以下是店铺为您带来的关于excel使用if函数和名称管理器功能制作动态报表,希望对您有所帮助。
excel使用if函数和名称管理器功能制作动态报表1、首先启动excel2010,执行文件-打开命令,打开一份事先准备好的数据表格,查看内容情况。
2、点击开发工具菜单并切换到该菜单,执行-插入-表单控件命令,从下拉菜单中选择选项按钮控件,在sheet1中创建两个选项按钮控件。
3、选择选项按钮控件1,右键单击从下拉菜单中选项编辑文字选项,修改为部门,同样方法修改选项按钮2为产品类型。
4、右键单击部门选项按钮,从下拉菜单中选择设置控件格式选项,接着弹出设置控件格式对话框,在该对话框中设置单元格链接为$B$7,勾选三维阴影,点击确定按钮。
5、采用同样的方法对“产品类型”选项按钮进行操作,选择数据区域b1:f1,执行复制操作,接着在单元格a10中执行选择性粘贴,选择转置,将行转置为列。
6、执行公式-名称管理器命令,在弹出的对话框中点击新建按钮,弹出新建对话框,在该对话框中输入名称为“菜单”,引用位置输入=if($B$7=1,$A$2:$A$5,$A$10:$A$14),点击确定按钮。
7、执行开发工具-插入-组合框命令,在sheet1上创建一个组合框,右键单击该组合框从下拉菜单中选择设置控件格式选项,在弹出的对话框中设置数据源区域为菜单,单元格链接为$C$7,勾选三维阴影,点击确定按钮。
8、再次执行工具-名称管理器命令,在弹出的对话框中点击新建命令,接着弹出另一个对话框,输入名称为“销量”,引用位置输入=if($B$7=1,offset($A$1:$C$7,1,1,5),offset($A$1,1,A$7,4,1)),点击确定按钮。
iFix如何制作EXCEL报表
iFix如何制作EXCEL报表在VBA中引用Microsoft Excel 11.0 Object Library和Microsoft ADO 6.0 Library。
在画面中添加个按钮。
复制以下代码:‘----------开始复制(不包括此行)--------------[hide]Option ExplicitDim rsADO As ADODB.RecordsetDim cnADO As ADODB.ConnectionPrivate Sub Command1_Click()Dim StrDir As StringStrDir = "E:\"Dim i As LongDim Sql As StringSql = "SELECT * FROM THISNODE"Set cnADO = New ADODB.ConnectionSet rsADO = New ADODB.RecordsetcnADO.ConnectionString = "Provider = Microsoft OLE DB Provider for ODBC Driv ers;DSN=FIX Dynamics Real Time Data;UID=;PWD="cnADO.OpenrsADO.CursorLocation = adUseClientrsADO.Open Sql, cnADO, adOpenDynamic, adLockUnspecified, -1If rsADO.RecordCount <= 0 ThenMsgBox "无数据!", vbOKOnly + vbInformation, "信息..."Set cnADO = NothingSet rsADO = NothingExit SubEnd IfDim xlApp As ObjectDim xlBook As ObjectDim xlSheet As ObjectSet xlApp = New Excel.ApplicationxlApp.DisplayAlerts = FalsexlApp.Visible = FalseSet xlBook = xlApp.Workbooks.Open(StrDir & "\报表.xls")'需要文件(E:\报表.xls)Set xlSheet = xlBook.Worksheets(1)For i = 1 To rsADO.RecordCountxlSheet.Cells(i, 1) = rsADO.Fields(1).Value & ""xlSheet.Cells(i, 2) = rsADO.Fields(2).Value & ""xlSheet.Cells(i, 3) = rsADO.Fields(3).Value & ""xlSheet.Cells(i, 4) = rsADO.Fields(4).Value & ""Next ixlApp.Visible = TruexlApp.DisplayAlerts = FalseSet xlSheet = NothingSet xlBook = NothingSet xlApp = NothingSet cnADO = NothingSet rsADO = NothingEnd Sub[/hide]‘----------结束复制(不包括次行)--------------注意:1.iFix历史数据库只支持读90天的数据,在SQL语句中限定时间即可。
IFIX报表
一、新建access日报数据库ReportData(预装office2007以上版本)表名:ReportData右键设计视图:右键打开:月报数据库ReportMonth右键设计视图:右键打开:年报数据库ReportYear 右键设计视图:右键打开:删除日期主键,索引选择“无”;时间:长整型;其他累计:长整型。
二、配置ODBC64位操作系统打开ODBC方法:C:/Windows/SysWOW64/odbcad32.exe完成后确定即可,月报,年报同上。
32位系统:开始》控制面板》管理工具》ODBC。
同上设置三、IFIX新建时间调度时间间隔设置12小时,开始时间是6点54分。
一天分为白班(7点到19点)夜班(19点到7点),分班累计重置时间为6点54分和18点54分。
Private Sub sjdiaodu_OnTimeOut(ByVal lTimerId As Long)Dim cn As ADODB.Connection '定义一个ADO方式的数据库连接Dim res As ADODB.Recordset '定义一个ADO方式的数据库记录集Dim StrSQL As StringSet cn = New ADODB.Connection '定义cn为新的ADO数据连接Set res = New ADODB.Recordset '定义res为新的ADO数据库记录集'On Error Resume Nextcn.ConnectionString = "DSN=ReportData;UID=;PWD=;" '定义cn的连接数据源为ReportData 即ODBC中建立的ACCESS的数据源名cn.OpenStrSQL = "select * from ReportData Where 日期=#" & Date & "#" '使用SQl语"句查找ReportData表中日期为Data的数据res.Open StrSQL, cn, adOpenKeyset, adLockOptimisticres.ADDNew '添加一个新的记录If Hour(Time) = 6 Thenres.Fields(1) = 2 '在1列加入白班计数res.Fields(0) = Date -1'在0列加入日期,早上6点54分记得数算成前一天日累计ElseIf Hour(Time) = 18 Thenres.Fields(1) = 1 '在1列加入夜班计数res.Fields(0) = Date '在0列加入日期ElseEnd IfEnd Ifres.Fields(2) = Fix32.Fix.R0126.F_CV '在2列加入标签1res.Fields(3) = Fix32.Fix.R0127.F_CV '在3列加入标签2res.Fields(4) = Fix32.Fix.R0128.F_CV '在4列加入标签3res.Fields(5) = Fix32.Fix.R0129.F_CV '在5列加入标签4res.Fields(6) = Fix32.Fix.R0130.F_CV '在6列加入标签5res.Update '保持记录res.Close '关闭记录集cn.CloseSet res = NothingSet cn = NothingEnd Sub月调度Private Sub sjmonth_OnTimeOut(ByVal lTimerId As Long)Dim Mcn As ADODB.Connection '定义一个ADO方式的数据库连接Dim Mres As ADODB.Recordset '定义一个ADO方式的数据库记录集Dim MStrSQL As StringSet Mcn = New ADODB.Connection '定义cn为新的ADO数据连接Set Mres = New ADODB.Recordset '定义res为新的ADO数据库记录集'On Error Resume NextMcn.ConnectionString = "DSN=ReportMonth;UID=;PWD=;" '定义cn的连接数据源为ReportData 即ODBC中建立的ACCESS的数据源名Mcn.OpenMStrSQL = "select * from ReportMonth Where 日期=#" & Date & "#" '使用SQl语"句查找ReportData表中日期为Data的数据Mres.Open MStrSQL, Mcn, adOpenKeyset, adLockOptimisticMres.ADDNew '添加一个新的记录Mres.Fields(0) = DateAdd("y", -1, Date) '在0列加入日期-1Mres.Fields(1) = Day(Date) - 1 '在1列加入天数-1Mres.Fields(2) = Fix32.Fix.R0141.F_CV '在2列加入标签1Mres.Fields(3) = Fix32.Fix.R0142.F_CV '在3列加入标签2Mres.Fields(4) = Fix32.Fix.R0143.F_CV '在4列加入标签3Mres.Fields(5) = Fix32.Fix.R0144.F_CV '在5列加入标签4Mres.Fields(6) = Fix32.Fix.R0145.F_CV '在6列加入标签5Mres.Fields(7) = DatePart("m", Date) '在7列加入标签6Mres.Fields(8) = DatePart("yyyy", Date) '在8列加入标签7Mres.Update '保持记录Mres.Close '关闭记录集Mcn.CloseSet Mres = NothingSet Mcn = NothingEnd Sub年调度(用于月数据记录,年数据不做显示)Private Sub Year_OnTimeOut(ByVal lTimerId As Long)Dim Ycn As ADODB.Connection '定义一个ADO方式的数据库连接Dim Yres As ADODB.Recordset '定义一个ADO方式的数据库记录集Dim YStrSQL As StringSet Ycn = New ADODB.Connection '定义cn为新的ADO数据连接Set Yres = New ADODB.Recordset '定义res为新的ADO数据库记录集'On Error Resume NextYcn.ConnectionString = "DSN=ReportYear;UID=;PWD=;" '定义cn的连接数据源为ReportData 即ODBC中建立的ACCESS的数据源名Ycn.OpenYStrSQL = "select * from ReportYear Where 日期=#" & Date & "#" '使用SQl语"句查找ReportData表中日期为Data的数据Yres.Open YStrSQL, Ycn, adOpenKeyset, adLockOptimisticYres.ADDNew '添加一个新的记录Yres.Fields(0) = DateAdd("y", -1, Date) '在0列加入日期-1Yres.Fields(1) = DatePart("m", Date) - 1 '在1列加入月份-1Yres.Fields(2) = Fix32.Fix.R0135.F_CV '在2列加入标签1Yres.Fields(3) = Fix32.Fix.R0136.F_CV '在3列加入标签2Yres.Fields(4) = Fix32.Fix.R0137.F_CV '在4列加入标签3Yres.Fields(5) = Fix32.Fix.R0138.F_CV '在5列加入标签4Yres.Fields(6) = Fix32.Fix.R0139.F_CV '在6列加入标签5Yres.Fields(7) = DatePart("yyyy", Date) '在7列加入标签6,有bug,懒得改了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
∙iFix中如何实现EXCEL报表
∙ 2007-01-31 16:59:58 作者:ifixonline来源:
∙文字大小:【大】【中】【小】评分等级:3
在VBA中引用Microsoft Excel 11.0 Object Library和
Microsoft ADO 6.0 Library。
在画面中添加个按钮。
复制以下代码:
‘----------开始复制(不包括此行)--------------Option Explicit
Dim rsADO As ADODB.Recordset
Dim cnADO As ADODB.Connection
Private Sub Command1_Click()
Dim StrDir As String
StrDir = "E:\"
Dim i As Long
Dim Sql As String
Sql = "SELECT * FROM THISNODE"
Set cnADO = New ADODB.Connection
Set rsADO = New ADODB.Recordset
cnADO.ConnectionString = "Provider = Microsoft OLE DB Provide r for ODBC Drivers;DSN=FIX Dynamics Real Time Data;UID=;PWD ="
cnADO.Open
rsADO.CursorLocation = adUseClient
rsADO.Open Sql, cnADO, adOpenDynamic, adLockUnspecified, -1
If rsADO.RecordCount <= 0 Then
MsgBox "无数据!", vbOKOnly + vbInformation, "信息..."
Set cnADO = Nothing
Set rsADO = Nothing
Exit Sub
End If
Dim xlApp As Object
Dim xlBook As Object
Dim xlSheet As Object
Set xlApp = New Excel.Application
xlApp.DisplayAlerts = False
xlApp.Visible = False
Set xlBook = xlApp.Workbooks.Open(StrDir & "\报表.xls")'需要文件(E:\报表.xls)
Set xlSheet = xlBook.Worksheets(1)
For i = 1 To rsADO.RecordCount
xlSheet.Cells(i, 1) = rsADO.Fields(1).Value & ""
xlSheet.Cells(i, 2) = rsADO.Fields(2).Value & ""
xlSheet.Cells(i, 3) = rsADO.Fields(3).Value & ""
xlSheet.Cells(i, 4) = rsADO.Fields(4).Value & ""
Next i
xlApp.Visible = True
xlApp.DisplayAlerts = False
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
Set cnADO = Nothing
Set rsADO = Nothing
End Sub
‘----------结束复制(不包括次行)--------------。