admin管理员组

文章数量:1530845

2024年1月31日发(作者:)

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-4DMYB

Enterprise: JD8Y6-HQG69-P9H84-XDTPG-34MBB

Microsoft SQL Server 2008 R2序列号密钥

开发版32位:MC46H-JQR3C-2JRHY-XYRKY-QWPVM

开发版64位:FTMGC-B2J97-PJ4QG-V84YB-MTXX8

工组版:XQ4CB-VK9P3-4WYYH-4HQX3-K2R6Q

WEB版: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写入数据的语句,右击“”,选择“编辑前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 Explicit

Dim a As Single ‘定义中间变量,用来暂存从数据库中取出的数据 Dim b

As Single

Dim rsADO As set ‘定义连接数据库的ADO变量

Dim conn As New tion

Public CmdTruck As New d

Public dbUpdata As New d

Public rstUpdata As New Recordset

Private Sub CommandButton3_Click() ‘点击按钮的响应函数

Call showbb ‘调用显示报

表的函数showbb

Call closeDB1 ‘调用关闭数

据库的函数closeDB1

End Sub

Private Sub showbb()

Dim Rs As New set '定义连接数据库的ADO变量

openDB1 ‘打开DB1数据库,该函数在后面有定义

Connection

= conn

dText = "select max(COL1) as COL1,max(COL2) as COL2

from data" ‘从data表读取COL1和COL2的最大值

Set Rs = e ‘执行SQL语句

a = 0

b = 0

If Not ( Or ) Then ‘将读出来的数据传给中间变量a、b If

(Rs!col1) Then

a = Rs!col1

b = Rs!col2

End If

End If

Dim xlApp As Object '定义报表对象

Dim xlBook As Object

Dim xlSheet As Object

On Error GoTo errorhandle

Set xlApp = New ation

Set xlBook = (tPath & "app人

工数据日报表.xls") ‘打开报表模板 Set xlSheet =

eets(1)

yAlerts = False '警告禁用

e = False 'EXCEL隐藏

(10, 4) = a & "" ‘将中间变量的值写到对应excel的单元格 (11, 4) = b

& ""

tPath & "app人工数据日报表.htm",

FileFormat:=xlHtml '工作表另存为

yAlerts = True '警告使能

te tPath & "app人工数据

日报表.htm" ‘在WebBrowser控件上显示报表

Set xlSheet = Nothing

'释放内存

Set xlBook = Nothing

Set xlApp = Nothing

Set CmdTruck = Nothing

Set Rs = Nothing

Exit Sub

errorhandle:

MsgBox "报表生成错误~", vbOKOnly + vbInformation, "信息..."

Set xlSheet = Nothing

'释放内存

Set xlBook = Nothing

Set xlApp = Nothing

End Sub

Public Sub openDB1() '定义打开数据库的函数openDB1

If <> adStateOpen Then

With conn

.ConnectionString = "Provider=SQLOLEDB;

server=2C68LK83W2F62AZ;database=db1; uid=operation; pwd=123456;"

‘连接数据源的相关信息

.Mode = adModeReadWrite

.Open

End With

End If

End Sub

Public Sub closeDB1() '定义关闭数据库的函数closeDB1

If = adStateOpen Then

End If

End Sub

4、添加代码后点击“工具”-“引用”,在下图界面中,勾上microsoft

activex data objects

2.1 library和Microsoft excel 12.0 object library,否则会报错。

5、最后保存代码。

本文标签: 数据库点击界面