IFIX连接SQL读写数据和制作excel报表图文教程

合集下载

第12讲:IFIX报表制作

第12讲:IFIX报表制作
• 报表制作过程
1. 读取数据 2. 处理数据 3. 显示数据
第12讲:IFIX报表制作
• 读取数据
1. ADO读取 表制作
• ADO-Recordset ,可认为是内存表。 • 所谓内存表就是放在内存中的表。 数据没 有读取出来是放在外存的数据库中。 当你 把数据读出来后可以放在自定义的一个 dataset (内存中的数据容器)中,这时的 dataset 就保存在内存了,现在你对 dataset 的操作即为对内存表的操作了。当然不一 定要放在 dataset 中,任何你创建的数据载 体实例在它的生命期内都是存在与内存中 的。
第12讲:IFIX报表制作
• VBA介绍
1. 2. 3. 4. 对象(Object 物件) 属性(Property) 方法(Method) 事件(Event)
第12讲:IFIX报表制作
• 1. 2. 3. VBA iFIX自定义函数(电子书中) iFIX动画 iFIX专家向导
第12讲:IFIX报表制作
第12讲:IFIX报表制作
• 显示数据
1. Excel显示 2. HTML网页显示

利用iFIX监控软件实现数据采集和输出报表

利用iFIX监控软件实现数据采集和输出报表

利用iFIX监控软件实现数据采集和输出报表
吴坚兰;崔绍文;高连艳;温艳艳;孙合明
【期刊名称】《电气传动》
【年(卷),期】2009(039)007
【摘要】随着工业水平的发展,自动控制系统对监控系统的要求变得越来越高.监控系统直接面向试验过程,完成逻辑连锁控制、试验数据的采集和存储、实现整个试验过程的顺序控制和连续调节控制.其中数据采集和存储成为一个难点.介绍了应用iFIX软件借助OPC技术实现数据的采集,并通过VBA编程查找SQL数据库实现数据存储到EXCEL表中的实例,对实例中遇到的具体问题进行了分析和解决.首先对数据库查找条件和查找方法进行了分析;再针对实际应用中第一组采样数据丢失问题提出了解决办法并圆满解决.
【总页数】6页(P53-58)
【作者】吴坚兰;崔绍文;高连艳;温艳艳;孙合明
【作者单位】天津电气传动设计研究所,天津,300180;中冶恒通冷轧技术有限公司,河北,唐山,063611;天津电气传动设计研究所,天津,300180;天津现代技术学院,天津,300222;河北承德钢铥公司,热轧卷板厂,河北,承德,067002
【正文语种】中文
【中图分类】TP274
【相关文献】
1.规划建筑竣工测量报表输出软件的开发与实现 [J], 吴献丰;钟玉林
2.利用iFIX技术实现煤粉制备系统的动态监控 [J], 马琴
3.利用EXCEL完善IFIX监控软件的报表功能 [J], 杨永奇
4.EXCEL在IFIX软件的报表实现 [J], 巩伟;宋勇江
5.基于IFIX组态软件的低压电流互感器检定流水线运行监控系统的设计与实现 [J], 葛福菀;王兆军;张曼
因版权原因,仅展示原文概要,查看原文内容请购买。

iFix中采用ODBC制作报表

iFix中采用ODBC制作报表

在iFix中采用ODBC制作历史报表具体步骤如下:Step 1: 打开SCU中的Task Configuration,增加HTC.EXE和WSQLODC.EXE两个任务,并将它们设置成为后台运行状态;Step 2: 启动iFix,点击工具栏上的按钮打开Historical Assign,添加所需监控的数据点,并设置历史数据的采样速度。

Step 3: 打开任务控制,查看是否已经启动HTC。

Step 4: 在Globals\User下面添加三个字符型(vtString)变量,分别命名为strStartTime, strEndTime 和Interval。

新建一幅画面,如图如示,在画面上布置3个DATALINK分别指向strStartTime, strEndTime 和Interval,并设置成In place(即允许修改)。

strStartTimestrEndTimeIntervalStep 5:为画面上的各个按钮写代码,最好先将各按钮注册——即将鼠标移到按钮上方,按右键弹出菜单,选择Edit Script。

在VB Editor的工具菜单中的Reference(引用)中选中Microsoft Excel 9.0 Object Library和Microsoft ActiveX Data Objects,如下图所示。

然后在各按钮的处理程序中添加相应代码。

内容如下(可将下列代码直接COPY到你的VB编辑器中,覆盖因为注册产生的空代码):‘运行状态画面初始化Private Sub CFixPicture_Initialize()CommandButton1_ClickCommandButton2_Clickuser.Interval.CurrentValue = "00:00:30"End Sub‘组态状态画面初始化Private Sub CFixPicture_InitializeConfigure()user.strEndTime.CurrentV alue = "报表结束时间"user.strStartTime.CurrentValue = "报表开始时间"End Sub'设当前时间为报表开始时间Private Sub CommandButton1_Click()Dim curTime As StringcurTime = NowDim curmonth, curday, curhour, curminute, cursecond As Stringcurmonth = IIf(Month(curTime) < 10, "0" & Month(curTime), Month(curTime)) curday = IIf(Day(curTime) < 10, "0" & Day(curTime), Day(curTime))curhour = IIf(Hour(curTime) < 10, "0" & Hour(curTime), Hour(curTime))curminute = IIf(Minute(curTime) < 10, "0" & Minute(curTime), Minute(curTime)) cursecond = IIf(Second(curTime) < 10, "0" & Second(curTime), Second(curTime)) user.strStartTime.CurrentValue = Year(curTime) & "-" & curmonth & "-" & curday _& " " & curhour & ":" & curminute & ":" & cursecond End Sub'设当前时间为报表结束时间Private Sub CommandButton2_Click()Dim curTime As StringcurTime = NowDim curmonth, curday, curhour, curminute, cursecond As Stringcurmonth = IIf(Month(curTime) < 10, "0" & Month(curTime), Month(curTime))curday = IIf(Day(curTime) < 10, "0" & Day(curTime), Day(curTime))curhour = IIf(Hour(curTime) < 10, "0" & Hour(curTime), Hour(curTime))curminute = IIf(Minute(curTime) < 10, "0" & Minute(curTime), Minute(curTime)) cursecond = IIf(Second(curTime) < 10, "0" & Second(curTime), Second(curTime)) user.strEndTime.CurrentV alue = Year(curTime) & "-" & curmonth & "-" & curday & " " _& curhour & ":" & curminute & ":" & cursecondEnd Sub'打印此前10分钟历史报表,只是设置时间值,打印仍要调用打印程序Private Sub CommandButton3_Click()Dim curTime As StringcurTime = NowDim curmonth, curday, curhour, curminute, cursecond As Stringcurmonth = IIf(Month(curTime) < 10, "0" & Month(curTime), Month(curTime))curday = IIf(Day(curTime) < 10, "0" & Day(curTime), Day(curTime))curhour = IIf(Hour(curTime) < 10, "0" & Hour(curTime), Hour(curTime))curminute = IIf(Minute(DateAdd("n", -10, curTime)) < 10, "0" & _Minute(DateAdd("n", -10, curTime)), Minute(DateAdd("n", -10, curTime))) cursecond = IIf(Second(curTime) < 10, "0" & Second(curTime), Second(curTime)) user.strStartTime.CurrentValue = Year(curTime) & "-" & curmonth & "-" & curday & _" " & curhour & ":" & curminute & ":" & cursecond curminute = IIf(Minute(curTime) < 10, "0" & Minute(curTime), Minute(curTime)) user.strEndTime.CurrentV alue = Year(curTime) & "-" & curmonth & "-" & curday & _" " & curhour & ":" & curminute & ":" & cursecond End Sub'打印当天报表,只是设置时间值,打印仍要调用打印程序Private Sub CommandButton4_Click()Dim curTime As StringcurTime = NowDim curmonth, curday, curhour, curminute, cursecond As Stringcurmonth = IIf(Month(curTime) < 10, "0" & Month(curTime), Month(curTime))curday = IIf(Day(curTime) < 10, "0" & Day(curTime), Day(curTime))user.strStartTime.CurrentValue = Year(curTime) & "-" & curmonth & "-" & curday _& " " & "00:00:00"user.strEndTime.CurrentV alue = Year(curTime) & "-" & curmonth & "-" & curday _& " " & "23:59:59"End Sub'打印当月报表,只是设置时间值,打印仍要调用打印程序Private Sub CommandButton5_Click()Dim curTime As StringcurTime = NowDim curmonth, BeginofMonth, EndofMonth As Stringcurmonth = IIf(Month(curTime) < 10, "0" & Month(curTime), Month(curTime)) BeginofMonth = Year(curTime) & "-" & curmonth & "-01" & " " & "00:00:00"user.strStartTime.CurrentValue = BeginofMonthEndofMonth = Day(DateAdd("s", -1, DateAdd("m", 1, CDate(BeginofMonth))))user.strEndTime.CurrentV alue = Year(curTime) & "-" & curmonth & "-" _& EndofMonth & " " & "23:59:59"End Sub‘根据输入条件,保存/打印报表到文件Private Sub CommandButton6_Click()'运行EXCEL,打开报表模板文件Dim msexcel As Excel.ApplicationSet msexcel = CreateObject("Excel.Application")With msexcel.Visible = True ‘如为FALSE,则不显示EXCEL。

写IFIX实时数据到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图文教程 20200325

iFIX图文教程 20200325

iFIX图文教程版本V0.01更新时间:2020年3月26日目录前言 (4)几点说明 (5)本教程软件需求 (5)软件对系统要求 (5)软件限制的说明 (5)软件原理说明 (5)软件安装 (6)iFIX安装 (6)IGS驱动安装 (12)Historian数据库安装 (18)一个简单的入门示例 (23)准备工作 (23)VSPD虚拟串口安装 (23)Modbus从站模拟软件安装 (26)Modbus从站模拟软件安装(2) (28)搭建下位机测试 (29)建立通讯 (35)添加标签 (51)创建画面 (59)系统运行 (64)iFIX与S7200的通讯 (65)S7200程序 (65)iFIX程序 (66)iFIX与TwinCAT2通讯 (73)iFIX创建新的项目 (78)过程数据库(PDB数据库) (88)过程数据库的数据类型(未完成) (92)语言切换 (92)标签组 (98)定时器控件 (105)VisiconX控件的使用 (107)vxData对象 (107)VBA 数据类型 (118)VBA 过程 (118)VBA 类与实例 (119)创建类 (119)创建实例 (124)Application的事件 (128)VBA 单链表 (130)使用Excel获取Historian中的数据 (136)VB数据结构(仅供参考,非完整实现) (139)一个特殊的类 (139)单向链表 (140)树形结构 (141)具体问题解答 (141)iFIX访问其它页面的控件? (141)修改磁盘空间需求保证iFIX稳定 (142)退出iFIX系统代码 (142)iFIX颜色设定 (142)曲线的显示与隐藏 (144)时间获取,精确到毫秒 (145)SQLServer数据库读写 (146)VB防止添加重复项到列表中 (147)Like用法 (147)修改磁盘空间需求保证iFIX稳定 (148)frm界面访问grf界面中的变量和对象 (148)获取用户名和组名的方法(调度的后台执行) (151)获取用户名和组名的方法(属性) (152)参考 (154)教程更新 (154)前言最近在编写软件设计文档,我们使用的是iFIX,iFIX的优势应该是扩展性最好,主要是因为它采用了微软的VBA脚本,同时也带来一些问题,如不容易上手和掌握,另外与之配套的教程也特别少,使用的过程中遇到了一些麻烦,做了一些总结,把这些总结整理了一下,希望能让更多的人入门。

Excel处理SQL数据库教程1

Excel处理SQL数据库教程1

Excel处理SQL数据库教程我们可以用Excel来处理SQl数据库,这样可以加快开发步伐。

Excel 有很强的显示效果,打印控制也比较简单,是计算机上必备的软件。

我们通过下面的步骤,一步步的学习如何通过Excel来控制和开发简单的程序。

作为一个入门的教程,力求从最简单的步骤开始。

学习本教程要求已经具备了比较初步的vba编程经验。

步骤一:打开Excel后,进入microsoft visual basic 编辑器(ALT+F11)步骤二:引用ADO。

方法是在vb编辑器中点击菜单栏中的“工具”菜单——“引用”,找到这项,勾选上。

我们对于数据库的操作基本最基本的操作就是“增加”,“删除”,“查询”等操作。

以下我们通过实例来说明。

1、如何向数据库增加记录以下代码中红色底纹部分文字是你需要修改的,比如这里的jszxfwq就是sql服务器名,database就是要进行处理的数据库名,本例是hszx;uid是登陆的用户名,这里是sa,pwd是登陆的密码,这里是空。

例子引用的表a只有两个字段,分别是a(文本类型),b(整数类型)Sub 增加记录()'首先是建立连接Dim cn As New ADODB.ConnectionDim strCn As String, sqlins As String ‘Dim rs As New ADODB.RecordsetstrCn = "Provider=sqloledb;Server=jszxfwq;Database=hszx;Uid=sa;Pwd=;"cn.Open strCn‘通过以上步骤就建立了一个连接,有了这个连接,表示你机器上的excel就连接上了sql所在的服务器,可以对hszx数据库进行操作了。

sqlins=”insert into a(a,b) values(‘hoo’,2)”cn.Execute sqlinsset cn=NothingEnd Sub运算结果如下进一步的,如果我们使用循环,就可以将电子表格中的数据导入到SQl数据库中。

报表控件应用-iFix

报表控件应用-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教程PPT学习课件

IFix教程PPT学习课件
32
B. 全局阀值表 全局阀值表也称为查找表,常用于
创建反复使用、有共性的表,可用于: 颜色阀值、字符串值或范围。 ★ 使用全局阀值表 全局阀值表的值通过下面的表达式获得:
—User.TableName 在对象动画中选择“共享查找表”,使 用全 局阀值表(用画面对象演示) C:全局过程、窗体在画面中演示
增加2台 管理机
分布式网络结构
0
0
tags
tags
6651 50
6651 5000
6651 tags
50
5000
0 tags
50
5000
6651 tags
1000 I/O
14
6651 100
6651 tags
101 I/O
100
1000
tags
101
100
tags
1000 I/O
101 I/O
• 企业级分布式结构应用
标准工具栏 – 用户 可以自定义相应工 具栏及生成按钮专
家。
系统目录树
工作台的两种模式 – 组态模式和运行模式 组态模式: 创建、组态图形,建立动态连 接
运行模式: 验证、操作图形 通过按 Ctrl + W 组合键,切换工作台组态和 运行模式,快速验证图形动画效果。
27
3000多种强大图库随意使用
9
一个PDB可供多个“Workspace连接”
iClient iFIX PDB
过程硬件
TCP/IP或NetBios 可以是各种形式的网络
10
一个“Workspace”可供多个PDB连接
iClient TCP/IP或NetBios
PDB1
PDB2

excel实现ifix数据查询的方法

excel实现ifix数据查询的方法

2019.08摘There are many ways to realize the iFIX report This paper takes the combination of Excel and iFIX local da tabase as an example to illustrate the realization of the method It extracts data from iFIX through VBA script presents the da ta orderly in Excel table and achieves the purpose of report function Key words iFIX 方法namics Historical Data FIX Dynamics Real Time Da ”。

Real Time 方法通过脚本将数据存储到外部数据库),tion iFIX Inte gration Toolkit (。

(。

(。

(。

(。

(。

(Private Sub CommandButton1_Click ()Dim path As String *64Const tagnum =16path ="D:\XXXX\HTRDATA"TagNum1=tagnum \8TagNum2=tagnum Mod 8NTFTAG (0)="THISNODE"+":"+"TAG1"+"."+"F_CV"NTFTAG (1)="THISNODE"+":"+"TAG2"+"."+"F_CV"…NTFTAG (n-1)="THISNODE"+":"+"TAGn"+"."+"F_CV"sdate =Trim (InputBox ("输入报表时间:YYYY-MM-DD","选择时间",Date ))If sdate>""Then If IsDate (sdate )ThenSheet1.Range (Cells (4,1),Cells (2000,tag⁃num +1))=""Sheet1.Range (Cells (4,1),Cells (2000,tag⁃num +1)).Borders.LineStyle =xlNone Sheet1.Cells (1,1)=Format (sdate,"yyyy 年mm 月dd 日运行记录")For num =0To TagNum1If num =TagNum1Then kkkk =TagNum2-1Else kkkk =7End IfFor k =0To kkkk ntf =NTFTAG (num *8+k )Next kFor k =0To kkkk ReDim values (NumSamples )ReDim times (NumSamples )ReDim Stats (NumSamples )ReDim alarms (NumSamples )For i =0To NumSamples -1Sheet1.Cells (i +4,1)=SecondsToTime$(times (i ))If Stats (i )=0ThenSheet1.Cells (i +4,num *8+k +2)=values (i )ElseSheet1.Cells (i +4,num *8+k +2)=""End If Next i Next k Next num ·Sheet1.Range (Cells (4,1),Cells (3+NumSam⁃ples,tagnum +1)).Borders.LineStyle =1ElseMsgBox "错误的日期!"End If End If End Sub(下转第290页)2882019.08们表达自己的看法和感受到他人的想法;(;(3多中心理论应用到公共环境治理中在强调不同社会群体的多中心参与的同时如果说公地悲剧的产生是源于公共池塘资源的不可排他库iFIX 参考文献Proficy HMI/SCADA -iFIX GE Intelligent Plat [3]《iFIX 数据库参考书》,GE Intelligent Platforms ,Inc ,2013.(上接第288页)290。

Excel处理SQL数据库教程2

Excel处理SQL数据库教程2

Excel处理SQL数据库教程(二)接着写1)用编程的方式向excel中导入数据这个时候就要使用到了recordset这个东东了,Sub 显示数据()…建立一个连接Dim cn As New ADODB.ConnectionDim strCn As StringDim strCom As StringDim rs As New ADODB.RecordsetDim i …i是行号strCn = "Provider=sqloledb;Server=jszxfwq;Database=hszx;Uid=sa;Pwd=;"cn.Open strCn…连接建立完了以后将查询的结果产生一个数据集strCom=”select * from a”rs.Open strCom, cn…读取这个数据集i=1Do While Not rs.EOFSheets(“测试”).Cells(i,1).value=rs(“a”) …注意这里的字段名a可是加了引号的了Sheets(“测试”).Cells(i,2).value=rs(“b”)i=i+1rs.MoveNextLoopSet rs = Nothingcn.CloseEnd Sub在数据库中的内容如图在电子表格中的内容如下,注意这个工作表的名称你要自己改为”测试”2)同样用编程的方法还有不用数据集的方法,而是用代码使用查询,将结果返回到工作表中。

其实只要录制一个宏就可以了,以下是我对录制的宏进行的更改,只要你更改很少的部分就可以直接使用了。

Sub 用查询的方法显示数据()With ActiveSheet.QueryTables.Add(Connection:= _"ODBC;DRIVER=SQL Server;SERVER=JSZXFWQ;UID=sa;PWD=;APP=Microsoft Office XP;WSID=ZJTRUEKING;DATABASE=hszx" _, Destination:=Sheets("测试").Range("A1")) …这个A1表示的导入数据的开始位置.CommandText = Array("SELECT a,b from a") …写sql语句了,最简单的还是要学学的。

excel中使用sql的方法

excel中使用sql的方法

excel中使用sql的方法Excel是一款功能强大的电子表格软件,它不仅可以用于数据的输入、计算和分析,还可以使用SQL语言进行数据查询和处理。

本文将介绍如何在Excel中使用SQL的方法。

一、Excel中的SQL查询在Excel中,我们可以使用SQL语言来查询和处理数据。

首先,我们需要确保已经安装了Excel的Power Query插件。

在Excel的菜单栏中,点击“数据”选项卡,然后点击“来自其他来源”下的“从数据库”选项,选择“从SQL Server数据库”。

接下来,我们需要输入连接数据库的相关信息,包括服务器名称、数据库名称、登录凭据等。

在连接成功后,我们可以在“编辑”窗口中使用SQL语言来查询数据。

例如,我们可以使用SELECT语句来选择特定的列和行,使用WHERE语句来过滤数据,使用ORDER BY语句来排序数据等。

二、Excel中的SQL筛选除了使用SQL查询数据,我们还可以使用SQL语言来筛选数据。

在Excel的菜单栏中,点击“数据”选项卡,然后点击“筛选”下的“高级筛选”选项,选择“使用查询”。

在“高级筛选”对话框中,我们可以输入SQL语句来筛选数据。

例如,我们可以使用WHERE语句来指定筛选条件,使用AND和OR来组合多个条件,使用LIKE语句来进行模糊匹配等。

三、Excel中的SQL计算除了查询和筛选数据,我们还可以使用SQL语言在Excel中进行计算。

在Excel的菜单栏中,点击“数据”选项卡,然后点击“来自其他来源”下的“从数据库”选项,选择“从SQL Server数据库”。

在连接成功后,我们可以在“编辑”窗口中使用SQL语言来进行计算。

例如,我们可以使用SUM函数来计算某一列的总和,使用AVG 函数来计算某一列的平均值,使用COUNT函数来计算某一列的行数等。

四、Excel中的SQL更新除了查询、筛选和计算数据,我们还可以使用SQL语言来更新数据。

在Excel的菜单栏中,点击“数据”选项卡,然后点击“来自其他来源”下的“从数据库”选项,选择“从SQL Server数据库”。

第11讲 iFIX历史数据库和报表

第11讲 iFIX历史数据库和报表

从零开始学iFIX 培训课程
第11讲iFIX历史数据库和报表
主讲:钱立湘
出品:极易组态软件专业培训网
内容
历史数据库作用
历史数据库配置
历史数据保存
历史数据显示-图表,表格 电子书-《历史数据趋势》
本讲是将数据保存
3.历史数据保存
根据配置保存到硬盘
保存执行程序HTC.exe
SCU-任务添加
数据文件保存位置-HTRDATA\节点名\ 运行监控-任务控制
4.历史数据显示
显示-数据从硬盘读取到内存 图表方式-标准图表
数据源
FIX32-实时数据库,
HIST-历史数据库
4.历史数据显示 表格显示
VX控件
vxData-读取数据控件
将数据从硬盘到内存
vxGrid-表格显示控件
将数据显示到屏幕。

iFix如何制作EXCEL报表

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教程

IFIX教程

IFIX教程IFIX教程1.概述1.1软件的基本功能:数据采集◆与工厂的I/O设备直接通信◆通过I/O驱动程序,与I/O设备接口数据管理◆处理、使用所取数据◆数据管理包括很多方面,如过程监视(图形显示),监视控制,报警,报表,数据存档1.2节点类型:一个运行IFIX软件的计算机称为一个节点有SCADA服务器、iClient、HMI Pak三种类型独立节点,本地节点和远程节点2.iFIX结构2.1 基本结构:包括过程数据、I/O驱动器、DIT、SAC和过程数据库PDBI/O驱动器:iFIX和PLC之间的接口称为I/O驱动器功能:数据采集,监视和控制I/O驱动器DIT(驱动器映像表-Driver Image Control):是在SCADA服务器内存中存储I/O驱动器轮询记录的区域每个轮询记录有一个刷新率,称为轮询(poll)时间过程数据库:是在SCADA服务器内存中存储I/O驱动器存储轮询记录数据的区域 SAC:扫描、报警和控制SAC的功能:◆从DIT中读取数据◆将数据传至过程数据库PDB◆数据超过报警设定值,则报警图形显示Intellution Workspace以运行模式提供HMI功能分布式结构数据库的标识信息:句法:SERBER.NODE.TAG.FIELD-SERVER:OPC数据服务器的名称-NODE:数据库所在的节点名-TAG:数据库中的标签名称-FIELD:标签的特殊参数信息数据流:I/O驱动器读取过程硬件●-I/O驱动器从过程硬件的寄存器中读取数据●-该数据传入DITSAC扫描DIT●-SAC从DIT中读数●-该数据传入过程数据库PDBIntellution Workspace向PDB发出请求●-图形显示中的对象显示PDB的数据●-其他应用可向PDB请求数据3.系统配置3.1 路径配置:用来指定IFIX目录的路径和名称报警配置:用来允许或禁止节点的报警功能网络配置:用于配置节点之间的通讯任务配置:在iFIX启动时,用来决定要执行的程序4. I/O驱动器4.1 SCADA配置:在SCADA服务器与过程硬件通讯前,需要定义并配置至少一种I/O 驱动器-iFIX在启动时最多可以装载8种I/O驱动器I/O驱动器类型:◆-串口通讯—COM驱动器◆-硬件供应商提供的驻留卡—RES驱动器◆-以太网卡—ETH驱动器4.2 SIM驱动器:基本功能,驱动器地址,信号发生器,报警和系统计数器4.3 I/O驱动器配置:◆通道定义◆设备定义◆轮询记录定义5. 图形介绍5.1 Intelluton工作台Intelluton的应用浏览器Intelluton工作台是使用IFIX的起点所有项目的配置都将在Intelluton工作台中完成也可以完成Intelluton iBatch软件的配置工作台模式:编辑模式和运行模式工作台部件:系统树,工作区,菜单栏,工具栏5.2 画面由对象组成,对象的名称必须是唯一的,名称必须以字母开头,最多可达40个字符,包括字母、数字和下划线“_”扩展名为*.GRF在画面对话框中改变属性6.使用过程数据库6.1 数据库标签数据库标签(块)是独立的单元数据库标签可以接收、检查、处理并输出过程值6.2 数据库编辑器:用来创建和编辑数据库块数据库以电子数据表的形式出现数据库编辑器可以打开节点列表(SCU中定义)中任何SCADA 节点的数据库6.3 导入和导出数据库:7.图形对象7.1 图形对象7.2 属性窗口:用来修改对象静态属性的工具7.3 数据连接:用来显示数据源的ASCII码或数字信息是画面中最长用的一种图形对象从“插入”菜单中选择“数据连接”7.4 表达式编辑器:◆允许访问iFIX系统中的所有数据源◆有多种数据源可用来动画对象属性◆数据源可以是单个值或一个表达式◆表达式中可有下列数据源常数以引号引起来的字符串iFIX标签OPC服务器I/O地址图形对象的属性全局对象的属性报警计数器历史数据7.5 数据输入工具8.动画对象8.1 工作台工具栏工作台的工具栏提供了一些公共操作的按钮编辑环境下,从工具栏对话框选择或屏蔽工具栏以显示或隐藏工具栏8.2 动画:是根据数据源的变化动态的改变对象的属性数据源包括:●IFIX数据库标签●画面或对象的属性值●OPC服务器●从I/O地址采集的实时数据●全局变量●预定义的表达式●VBA事件8.3 动画专家:包括填充专家,旋转专家,位置专家,比例专家,可视专家,边缘颜色专家,前景颜色专家,背景颜色专家等。

ifix连接SQL和读写EXCEL的方法

ifix连接SQL和读写EXCEL的方法

ifix连接SQL和读写EXCEL的方法1228人阅读| 0条评论发布于:2008-9-1 10:04:00连SQLSERVERDim rsADO As ADODB.RecordsetDim cnADO As ADODB.ConnectionDim Sql As StringSql = 'SELECT * FROM 数据库where 日期= ’' & Date & '’'Set cnADO = New ADODB.ConnectionSet rsADO = New ADODB.Recordset cnADO.ConnectionString = 'Provider = Microsoft OLE DB Provider for ODBC Drivers;driver=sql server;server=服务器;UID=sa;PWD=;database=数据库;'cnADO.Open rsADO.CursorLocation = adUseClient ’写SQL serverrsADO.Open Sql, cnADO, adOpenStatic, adLockOptimisticIf rsADO.RecordCount = 0 Thenrsado.addnewEnd IfWith rsADO !数据项=... ...end withrsADO.UpdatersADO.CloseSet cnADO = NothingSet rsADO = Nothing’读SQL SERVER ’改一个地方:rsADO.Open Sql, cnADO, adOpenDynamic, adLockUnspecified, -1 写到EXCELDim objExcel As ObjectDim xlBook As ObjectDim xlSheet As ObjectDim Filename1 As StringDim Filename2 As StringDim FSO As ObjectDim msg As IntegerOn Error Resume NextFilename1 = 'E:\**.xls'Filename2 = 'E:\module.xls' ‘先制作好模板文件Set FSO = CreateObject('scripting.filesystemobject')If FSO.FileExists(Filename1) = True Thenmsg = MsgBox('文件已经存在,是否替换?', vbYesNo, '')End IfIf msg = 7 ThenUnload MeEnd IfIf msg = 6 Or FSO.FileExists(Filename1) = False ThenIf FSO.FileExists(Filename2) = True ThenIf objExcel Is Nothing ThenSet objExcel = CreateObject('Excel.Application') End IfobjExcel.Visible = FalseobjExcel.Workbooks.Add(Filename2).SaveCopyAs (Filename1) Set xlBook = objExcel.Workbooks.Open(Filename1)Set xlSheet = xlBook.Worksheets(1)xlSheet.Cells(2, 'A') = ***Set xlSheet = Nothingmsg = MsgBox('文件已经保存,是否打开?', vbYesNo, '')If msg = 6 ThenobjExcel.Visible = TrueElse objExcel.Workbooks.CloseSet xlBook = NothingobjExcel.DisplayAlerts = FalseobjExcel.QuitSet objExcel = NothingEnd IfElse MsgBox '模板文件不存在' End IfEnd If。

IFIX读取SQL数据库

IFIX读取SQL数据库

Private Sub cmdreport_Click()If Me.TextBox1.Text = "" ThenMsgBox "请输入批号"Exit SubEnd If'-------------------------------------------------------------------------------------------------------Dim blShow As Boolean' Dim conODBC As ADODB.Connection'Dim adoRS As ADODB.Recordset'Set conODBC = New ADODB.Connection' Set adoRS = New ADODB.Recordset' Dim strQuery As String' conODBC.ConnectionString = "Provider = Microsoft OLE DB Provider for ODBC Drivers;" & _ ' "DSN=shxy1;UID=sa;PWD=sa;"' conODBC.Open "shxy1", "sa", "sa"'以下是按批次查询'strQuery = "select * from shxy1_batch where cpph='" + Me.TextBox1.Text + "' order by shxy1_batch.th ASC" '分装%%%%%%%%%%%%%%%'以下是按时间查询'strQuery = "SELECT * from znyt02" & _' " WHERE DA TETIME>=#" & d_start & "# AND" & _' " DA TETIME<= #" & d_end & "#"'--------------------------------------------------------------------------------------------------------------------- Dim conODBC As ADODB.ConnectionDim adoRS As ADODB.RecordsetDim strQuery As StringstrQuery = "select * from Batch where PH='" + Me.TextBox1.Text + "' order by Batch.TH ASC"Set conODBC = New ADODB.ConnectionconODBC.ConnectionString = "DSN = IFIXSQL; UID =sa; PWD =sa;"Set adoRS = New ADODB.RecordsetconODBC.Open "IFIXSQL", "sa", "sa"' adoRS.Open strQuery, conODBC, adOpenDynamic, adLockPessimistic'-------------------------------------------------------------------------------------------------adoRS.CursorLocation = adUseClient'adoRs.Open strQuery, cnAdo, adOpenDynamic, adLockUnspecified, -1adoRS.Open strQuery, conODBC, adOpenDynamic, adLockPessimisticIf adoRS.RecordCount > 0 Then 'GoTo ExcelElseMsgBox "没有符合要求的数据"Exit SubEnd If' MsgBox "error"Dim msexcel As New Excel.ApplicationSet msexcel = CreateObject("Excel.Application")Dim xlbook As Excel.WorkbookDim xlsheet As Excel.Worksheet'Set msexcel = New Excel.ApplicationSet xlbook = msexcel.Workbooks.Open(System.ProjectPath & "\APP\Report\模板\report.htm") Set xlsheet = xlbook.Worksheets(1)' xlsheet.Range("H3") = NowDim i As LongDim j As LongadoRS.MoveFirstFor i = 1 To adoRS.RecordCountFor j = 3 To 10 '#####msexcel.Cells(i + 4, j) = adoRS.Fields(j - 1)xlsheet.Range("I2") = adoRS.Fields(7)Next jadoRS.MoveNextNext iadoRS.CloseconODBC.Closemsexcel.Range("D2") = TextBox1' msexcel.Range("I2") = msexcel.Range("G5")' msexcel.Visible = Truemsexcel.DisplayAlerts = Falsexlbook.SaveAs System.ProjectPath & "\APP\Report\report.htm" '保存msexcel.DisplayAlerts = Truemsexcel.QuitSet xlsheet = NothingSet xlbook = NothingSet msexcel = Nothing'============================'日报WebReport.Navigate System.ProjectPath & "\APP\Report\report.htm" '显示'============================'月报WebReport.EnableTooltips = FalseEnd SubPrivate Sub WebReport_beforerightclick(ByVal Target As Excel.Range, cancel As Boolean) cancel = TrueEnd SubPrivate Sub Report_beforerightclick(ByVal Target As Excel.Range, cancel As Boolean)cancel = TrueEnd SubPrivate Sub PrintSet(sBottom As String, strTop As String, sLeft As String, sMargin_right As String)Dim hkey_root, hkey_path, hkey_key As StringDim RegWsh As Objecthkey_root = "HKEY_CURRENT_USER"hkey_path = "\Software\Microsoft\Internet Explorer\PageSetup"'//设置网页打印的页眉页脚为空Set RegWsh = CreateObject("WScript.Shell")hkey_key = "\header" '页眉RegWsh.RegWrite hkey_root + hkey_path + hkey_key, ""hkey_key = "\footer" '页脚RegWsh.RegWrite hkey_root + hkey_path + hkey_key, ""hkey_key = "\margin_bottom" '下页边距RegWsh.RegWrite hkey_root + hkey_path + hkey_key, sBottom 'hkey_key = "\margin_top" '上页边距RegWsh.RegWrite hkey_root + hkey_path + hkey_key, strTop 'hkey_key = "\margin_left" ' 左页边距RegWsh.RegWrite hkey_root + hkey_path + hkey_key, sLeft 'hkey_key = "\margin_right" ' 右页边距RegWsh.RegWrite hkey_root + hkey_path + hkey_key, sMargin_right ' '打印End SubPrivate Sub CommandButton2_Click()On Error Resume NextPrintSet "0.5", "0.5", "-0.5", "-0.5"'Me.WebReport.ExecWB 6, OLECMDEXECOPT_PROMPTUSERMe.WebReport.ExecWB 7, 1' OLECMDEXECOPT_PROMPTUSEREnd SubPrivate Sub DataLink23_Click()'下面的注释已自动加入。

ifix报表制作文档教学内容

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数据库连接为新的ADO数据库连接集'On Error Resume Next定义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列加入标签1 res.Fields(3) = Fix32.RW2.RW_Y0GBN11AP002_ZS.f_cv '在3列加入标签2 res.Update '保存记录Update(当Edit或AddNew方法完成后保存记录集) res.Close '关闭记录集cn.CloseSet res = NothingSet cn = NothingEnd Sub在vb2.2添加到FixBackgroundServer 任务打开SCU,点击如图所示:在文件名内查找FixBackgroundServer.exe文件添加后保存SCU文件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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-34MBBMicrosoft SQL Server 2008 R2序列号密钥开发版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服务使用相同的账户”,在弹出的界面中选择第一个账户,密码不用填;返回服务器配置界面点击下一步;进入数据库引擎配置界面,选择混合模式,输入自己设定的密码,点击“添加当前用户”,点击下一步,直至安装完成,关闭安装中心。

1.2 进入SQL server新建SQL登录名和数据库打开SQL,以Windows身份验证登录;连接完后,点击“安全性”-“登录名”,右击选择“新建登录名”:在弹出的界面中,点击左上角的“常规”,输入登录名、密码,不要勾选强制密码过期,之后点击左上角“服务器角色”;在弹出的界面中,根据需要勾选所需权限,这里全部勾选,再点击“用户映射”;在弹出的界面中,“映射到此登录名的用户”内勾选所有数据库,并在每个数据库的“数据库角色成员身份”中勾选db_owner和public,而后点击“确定”,完成新建登录名。

完成登录名创建后,断开当前连接或是退出SQL重新进入软件,以SQL身份验证登录,输入刚刚新建的登录名,点击“连接”;连接后,右击“数据库”,选择“新建数据库”,以默认配置完成新建,如这里新建数据库,取名为db1。

进入db1,新建三张表,新建右击“表”,选择“新建表”,输入如下图的列名及数据类型;点击保存,输入表名为sqllib,用于保存SQL命令;新建第二张表,列名及数据类型如下图,取名为sqlerr,用于保存各类错误: 新建第三张表,用于保存需要的工业历史数据,这里将表取名为data,添加两个列COL1和COL2,数据类型都为float。

接下来为sqllib表添加SQL命令,这里添加一条向data表的COL1、COL2写入数据的语句,右击“abo.sqllib”,选择“编辑前200行”;写入如下图的内容,点击保存。

注:如果要读取数据库内的数据,只要将该SQL命令换成相应的select语句。

1.3 创建ODBC数据源打开控制面板,依次点击“管理工具”-“数据源(ODBC)”,进入如下界面: 在点击“系统DSN”-点击“添加”按钮,在如下界面中选择“SQL Server”,点击“完成”。

在以下界面中填写名称命名数据源,服务器填写自己的计算机名(获取计算机名按照如下步骤:右击桌面的“计算机”-选择“属性”,在弹出的界面上就可以看到),点击“下一步”;按照下图配置,填入刚刚在SQL中新建的登陆名和密码,点击下一步;勾选“更改默认的数据库为”,在下拉框中选择刚刚新建的数据库名,点击下一步;直接点击“完成”按钮。

之后你可以在弹出的界面中点击“测试数据源”,若测试成功,则可以进入下一步骤。

1.4 在SCU内配置SQL打开IFIX,点击“SCU”,进入配置界面;在如下界面中点击“配置”-选择“SQL”,在弹出的界面中点击“增加”按钮,填入相应信息,点击“确定”。

选中刚刚添加的SQL账户,点击“配置SQL任务”;启用SQL支持,选择我们所创建的数据库ID,点击“确定”,完成配置。

1.5 在IFIX内创建SQT和SQD数据块打开IFIX的数据库管理器,创建数字量输入数据块DI1,当DI1的值发生变化时就触发SQT(当然也可以采用时间事件来触发SQT,下面也会有介绍),点击界面内的“高级”标签。

进入高级标签,勾选“启用输出”和“手动”;一般要保存到关系数据库的历史数据都是模拟量,因此本教程以模拟量为例子,将其存入SQL数据库。

创建模拟量寄存器数据块AR_1和AR_2: 创建数据块SQT,在数据库管理器中新建数据块,选择SQT类型,如下图;进入如下的界面,若要采用DI1数值变化来触发SQT,则如下图填写信息。

在刚刚创建的db1数据库中,我们建立了sqllib表,并在表内添加了sqlname为cmd1,sqlcmd为“Insert into data??”这条语句。

在如下界面中,SQL名填写“cmd1”,数据库ID填写“db1”(所建ODBC数据源名称),事件标签写入“DI1.F_CV”,事件类型勾选“值变化”,这样,当DI1的值变化时,SQT就会触发,找到db1数据库下的sqllib表内sqlname等于cmd1的这条语句,并执行。

在上图中的“下一块”中填写SQD_1,构成数据链,此时会弹出如下界面,点击“yes”;创建SQD数据块,如下图填写,因为是向数据库添加数据,所以方向选为OUT。

保存数据库管理器。

这样,就建立了一个DI1值变化触发的SQT和SQD。

如果我们希望以时间事件来触发SQT,应在建立SQT数据块的时候,设置触发时间,其余步骤相同。

例如,我们希望每天晚上23:00至23:59这段时间内,每5分钟记录一次数据到SQL数据库,建立SQT数据块时应如下图填写: 在IFIX主界面点“应用程序”,打开“任务控制”;验证SQL服务是否启动,如下图所示说明注册成功。

作进一步验证,在数据库管理器内更改DI1 的当前值,如将CLOSE 改为OPEN, 按 Ctrl + R, 观察到SQT_1 的当前值增加1,意味着SQT 被触发一次,打开SQL也可以发现data表增加了一行记录。

以上就是使用SQT和SQD读写SQL数据库的详细步骤。

2、使用ADO访问数据库2.1 定时向数据库添加记录首先,参照1.1-1.3的内容建立数据库(只需建立data表,sqllib和sqlerr不需创建),创建ODBC数据源。

打开IFIX,双击下图左下角的“数据定时写”,新建基于时间项;假设我们要在每晚23:00自动存数据,则如下图设置:点击“VB编辑器”,写入如下代码:填上代码后,一定要选择如下图这一步:点击“工具”-“引用”,在下图界面中,勾上microsoft activex data objects 2.1 library,否则会报错。

确定后保存。

右键点击FIXTIME8这一条,选择“调度程序属性”,在如下画面中选择“后台运行”,点确定;在后续弹出的窗口中都选择“是”,直至完成,fixtimer8激活,时间一到,程序就会自动添加记录。

2.2从数据库读数据从数据库读数据一般采用按钮触发,可以在ifix里新建一个画面,添加一个按钮,在按钮的脚本里添加代码,最后记得引用microsoft activex data objects 2.1 library。

代码基本和2.1相同,只是把相应的insert命令换成select语句。

二、 IFIX制作excel报表1、在建好数据库和数据源(参照1.1-1.3)后,新建一个ifix画面,添加一个ole对象,选择“Microsoft Web Browser”,用来显示报表;2、新建一张excel报表模板,放到工程目录的APP文件夹下,如“人工数据日报表.xls”;3、新建一个按钮,为其编写脚本,粘贴如下代码(覆盖新建画面原有的代码):Option ExplicitDim a As Single ‘定义中间变量,用来暂存从数据库中取出的数据 Dim bAs SingleDim rsADO As ADODB.Recordset ‘定义连接数据库的ADO变量Dim conn As New ADODB.ConnectionPublic CmdTruck As New mandPublic dbUpdata As New mandPublic rstUpdata As New RecordsetPrivate Sub CommandButton3_Click() ‘点击按钮的响应函数Call showbb ‘调用显示报表的函数showbbCall closeDB1 ‘调用关闭数据库的函数closeDB1End SubPrivate Sub showbb()Dim Rs As New ADODB.Recordset &#39;定义连接数据库的ADO变量openDB1 ‘打开DB1数据库,该函数在后面有定义CmdTruck.ActiveConnection= connmandText = "select max(COL1) as COL1,max(COL2) as COL2 from data" ‘从data表读取COL1和COL2的最大值Set Rs = CmdTruck.Execute ‘执行SQL语句a = 0b = 0If Not (Rs.BOF Or Rs.EOF) Then ‘将读出来的数据传给中间变量a、b If (Rs!col1) Thena = Rs!col1b = Rs!col2End IfEnd IfDim xlApp As Object &#39;定义报表对象Dim xlBook As ObjectDim xlSheet As ObjectOn Error GoTo errorhandleSet xlApp = New Excel.ApplicationSet xlBook = xlApp.Workbooks.Open(System.ProjectPath &amp; "\app\人工数据日报表.xls") ‘打开报表模板 Set xlSheet =xlBook.Worksheets(1)xlApp.DisplayAlerts = False &#39;警告禁用xlApp.Visible = False &#39;EXCEL隐藏xlSheet.Cells(10, 4) = a &amp; "" ‘将中间变量的值写到对应excel的单元格 xlSheet.Cells(11, 4) = b&amp; ""xlSheet.SaveAs System.ProjectPath &amp; "\app\人工数据日报表.htm", FileFormat:=xlHtml &#39;工作表另存为xlApp.DisplayAlerts = True &#39;警告使能xlApp.QuitMe.WebBrowser1.Navigate System.ProjectPath &amp; "\app\人工数据日报表.htm" ‘在WebBrowser控件上显示报表 xlApp.QuitSet xlSheet = Nothing&#39;释放内存Set xlBook = NothingSet xlApp = NothingSet CmdTruck = NothingSet Rs = NothingExit Suberrorhandle:MsgBox "报表生成错误~", vbOKOnly + vbInformation, "信息..."Set xlSheet = Nothing&#39;释放内存Set xlBook = NothingSet xlApp = NothingEnd SubPublic Sub openDB1() &#39;定义打开数据库的函数openDB1If conn.State &lt;&gt; adStateOpen ThenWith conn.ConnectionString = "Provider=SQLOLEDB;server=2C68LK83W2F62AZ;database=db1; uid=operation; pwd=123456;" ‘连接数据源的相关信息.Mode = adModeReadWrite.OpenEnd WithEnd IfEnd SubPublic Sub closeDB1() &#39;定义关闭数据库的函数closeDB1If conn.State = adStateOpen Thenconn.CloseEnd IfEnd Sub4、添加代码后点击“工具”-“引用”,在下图界面中,勾上microsoftactivex data objects2.1 library和Microsoft excel 12.0 object library,否则会报错。

相关文档
最新文档