IFIX连接SQL读写数据和制作excel报表图文教程.docx
- 文档编号:10109354
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:9
- 大小:18.97KB
IFIX连接SQL读写数据和制作excel报表图文教程.docx
《IFIX连接SQL读写数据和制作excel报表图文教程.docx》由会员分享,可在线阅读,更多相关《IFIX连接SQL读写数据和制作excel报表图文教程.docx(9页珍藏版)》请在冰豆网上搜索。
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简体中文版安装包下载链接:
点击“全新SQLServer独立安装或向现有安装添加功能”;
点击“输入产品密匙”,点击“下一步”:
(根据版本选择)
sqlserver2008密钥
Developer:
PTTFM-X467G-P7RH2-3Q6CG-4DMYB
Enterprise:
JD8Y6-HQG69-P9H84-XDTPG-34MBB
MicrosoftSQLServer2008R2序列号密钥
开发版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
功能选择界面,选择安装全部功能,点击“下一步”;
进入实例配置界面,选择默认实例,点击“下一步”;
进入服务器配置界面,启动类型均选为“自动”;点击“对所有SQLServer服务使用相同的账户”,在弹出的界面中选择第一个账户,密码不用填;返回服务器配置界面点击下一步;
进入数据库引擎配置界面,选择混合模式,输入自己设定的密码,点击“添加当前用户”,点击下一步,直至安装完成,关闭安装中心。
1.2进入SQLserver新建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”-点击“添加”按钮,在如下界面中选择“SQLServer”,
点击“完成”。
在以下界面中填写名称命名数据源,服务器填写自己的计算机名
(获取计算机名按照如下步骤:
右击桌面的“计算机”-选择“属性”,在弹出的界面上就可以看到),点击“下一步”;
按照下图配置,填入刚刚在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为“Insertintodata?
?
”这条语句。
在如下界面中,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编辑器”,写入如下代码:
填上代码后,一定要选择如下图这一步:
点击“工具”-“引用”,在下图界面中,勾上microsoftactivexdataobjects2.1library,否则会报错。
确定后保存。
右键点击FIXTIME8这一条,选择“调度程序属性”,在如下画面中选择“后台运行”,点确定;
在后续弹出的窗口中都选择“是”,直至完成,fixtimer8激活,时间一到,程序就会自动添加记录。
2.2从数据库读数据
从数据库读数据一般采用按钮触发,可以在ifix里新建一个画面,添
加一个按钮,在按钮
的脚本里添加代码,最后记得引用microsoftactivexdataobjects2.1
library。
代码基本和2.1相同,只是把相应的insert命令换成select语句。
二、IFIX制作excel报表
1、在建好数据库和数据源(参照1.1-1.3)后,新建一个ifix画面,添加一个ole对象,选择“MicrosoftWebBrowser”,用来显示报表;
2、新建一张excel报表模板,放到工程目录的APP文件夹下,如“人工数据日报表.xls”;
3、新建一个按钮,为其编写脚本,粘贴如下代码(覆盖新建画面原有的代码):
OptionExplicit
DimaAsSingle‘定义中间变量,用来暂存从数据库中取出的数据DimbAsSingle
DimrsADOAsADODB.Recordset‘定义连接数据库的ADO变量
DimconnAsNewADODB.Connection
PublicCmdTruckAsNewADODB.Command
PublicdbUpdataAsNewADODB.Command
PublicrstUpdataAsNewRecordset
PrivateSubCommandButton3_Click()‘点击按钮的响应函数
Callshowbb‘调用显示报
表的函数showbb
CallcloseDB1‘调用关闭数
据库的函数closeDB1
EndSub
PrivateSubshowbb()
DimRsAsNewADODB.Recordset'定义连接数据库的ADO变量
openDB1‘打开DB1数据库,该函数在后面有定义CmdTruck.ActiveConnection
=conn
CmdTruck.CommandText="selectmax(COL1)asCOL1,max(COL2)asCOL2fromdata"‘从data表读取COL1和COL2的最大值
SetRs=CmdTruck.Execute‘执行SQL语句
a=0
b=0
IfNot(Rs.BOFOrRs.EOF)Then‘将读出来的数据传给中间变量a、bIf(Rs!
col1)Then
a=Rs!
col1
b=Rs!
col2
EndIf
EndIf
DimxlAppAsObject'定义报表对象
DimxlBookAsObject
DimxlSheetAsObject
OnErrorGoToerrorhandle
SetxlApp=NewExcel.Application
SetxlBook=xlApp.Workbooks.Open(System.ProjectPath&"\app\人
工数据日报表.xls")‘打开报表模板SetxlSheet=
xlBook.Worksheets
(1)
xlApp.DisplayAlerts=False'警告禁用
xlApp.Visible=False'EXCEL隐藏
xlSheet.Cells(10,4)=a&""‘将中间变量的值写到对应excel的单元格xlSheet.Cells(11,4)=b
&""
xlSheet.SaveAsSystem.ProjectPath&"\app\人工数据日报表.htm",
FileFormat:
=xlHtml'工作表另存为
xlApp.DisplayAlerts=True'警告使能
xlApp.Quit
Me.WebBrowser1.NavigateSystem.ProjectPath&"\app\人工数据
日报表.htm"‘在WebBrowser控件上显示报表xlApp.Quit
SetxlSheet=Nothing
'释放内存
SetxlBook=Nothing
SetxlApp=Nothing
SetCmdTruck=Nothing
SetRs=Nothing
ExitSub
errorhandle:
MsgBox"报表生成错误~",vbOKOnly+vbInformation,"信息..."
SetxlSheet=Nothing
'释放内存
SetxlBook=Nothing
SetxlApp=Nothing
EndSub
PublicSubopenDB1()'定义打开数据库的函数openDB1
Ifconn.State<>adStateOpenThen
Withconn
.ConnectionString="Provider=SQLOLEDB;
server=2C68LK83W2F62AZ;database=db1;uid=operation;pwd=123456;"
‘连接数据源的相关信息
.Mode=adModeReadWrite
.Open
EndWith
EndIf
EndSub
PublicSubcloseDB1()'定义关闭数据库的函数closeDB1
Ifconn.State=adStateOpenThen
conn.Close
EndIf
EndSub
4、添加代码后点击“工具”-“引用”,在下图界面中,勾上microsoft
activexdataobjects
2.1library和Microsoftexcel12.0objectlibrary,否则会报错。
5、最后保存代码。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IFIX 连接 SQL 读写 数据 制作 excel 报表 图文 教程
![提示](https://static.bdocx.com/images/bang_tan.gif)