IFIX与EXCEL的连接
更新时间:2023-08-06 07:15:01 阅读量: 实用文档 文档下载
IFIX与EXCEL的连接
第一步,创建ODBC数据源,具体方法:启动控制面板中的数据源ODBC,单击“系统DNS”对话框,选择所需数据源的驱动,如:“Microsoft excel driver (*.exl)”,单击“完成”按钮,弹出“ODBC Microsoft excel 安装”对话框;在数据源名中定义一个数据源名称,数据库中“选择”中选择区县数据所在的数据库,此数据库的表至少有三个字段:时间字段、数据字段、毫秒字段。单击确定按钮,新创建数据源就添加到“系统DNS”列表中。
第二步,在IFIX中创建代码
ADO—在安装了MCROWIN BASIC 6.0 等软件就有了;
Private Sub CommandButton1_Click()
'注释: 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 String
Dim c As Integer
Dim r As Integer
Dim Intyexcel As Excel.Application
Dim MyDate, MyMonth, MyDay, MyHour, MyMinute, MySecond
Dim StartTime, EndTime, Duration, DisplayDay, DisplayMonth As String
'++===================================================================
'报表中的 TAG
Dim Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8 As String
Dim Items As Integer
Tag1 = "TEST"
Tag2 = "TEST1"
Tag3 = " "
Tag4 = " "
Tag5 = " "
Tag6 = " "
Tag7 = " "
Tag8 = " "
'从历史库中取得域项, 2 - DATATIME, VALUE, TAG 共三项
Items = 2
'--====================================================================
MyDate = Now()
MyMonth = Month(MyDate)
MyDay = Day(MyDate)
MyHour = Hour(MyDate)
MyMinute = Minute(MyDate)
MySecond = Second(MyDate)
StartTime = "2000" & "-" & MyMonth & "-" & MyDay - 1 & " " & "00:00:00"
EndTime = "2000" & "-" & MyMonth & "-" & MyDay - 1 & " " & "23:00:00"
'++==========================================================================
'查询,根据报表修改
strQueryAvg = "Select DATETIME, VALUE, TAG FROM FIX " & _
"WHERE MODE = 'AVERAGE' 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 INTERVAL = '01:00:00' and " & _
"(DATETIME >= and " & _
"DATETIME <= )"
'--===========================================================================
Dim cnADO As New ADODB.Connection
Dim rsADO As Recordset
Set cnADO = New ADODB.Connection
cnADO.ConnectionString = "DSN = FIX Dynamics Historical Data; UID = sa; PWD = ;" cnADO.Open "FIX Dynamics Historical Data", "sa", ""
Set rsADO = New ADODB.Recordset
rsADO.Open strQueryAvg, cnADO, adOpenForwardOnly, adLockBatchOptimistic '''如果执行上面的语句出错的话,则最大的可能性就是SQL语句有错误!
r = 1
Set Intyexcel = New Excel.Application
Intyexcel.Visible = False
'++============================================================================
'打开的报表文件名
Dim OutReportFile As String
Dim InReportFile As String
InReportFile = "C:\Dynamics\App\HIST1"
Intyexcel.Workbooks.Open InReportFile & ".XLS"
Intyexcel.Sheets("Sheet2").Select
Intyexcel.Columns("A:Z").Select
Intyexcel.Selection.ClearContents
Intyexcel.Range("A1").Select
While rsADO.EOF <> True
With Intyexcel.Worksheets(2)
For c = 0 To Items
If rsADO(c) <> "" Then .Cells(r, c + 1).Value = rsADO(c)
Next c
r = r + 1
rsADO.MoveNext
End With
Wend
Intyexcel.Sheets("Sheet1").Select
' Intyexcel.ActiveSheet.PageSetup.Orientation = xlPortrait 'xlLandscape
' Intyexcel.ActiveSheet.PageSetup.PaperSize = xlPaperA4
Intyexcel.ActiveSheet.PrintOut
Intyexcel.DisplayAlerts = False
Intyexcel.ActiveWorkbook.Save
OutReportFile = InReportFile & "_00" & MyMonth & MyDay
Intyexcel.ActiveWorkbook.SaveAs OutReportFile
Intyexcel.Quit
Intyexcel.DisplayAlerts = True
Set Intyexcel = Nothing
Set cnADO = Nothing
End Sub
4.2 iFIX中电厂日报表的生成
总则:运用iFIX的调度器运行基于时间的VBA脚本来生成每天的EXCEL格式日报表。
1) iFIX中调度设置
在iFIX中新建时间调度,设置成间隔1小时的调度项,然后点击VB编辑器自定义脚本.
2) 初始变量定义
Dim ReportArray As Variant Rem 存放日报中所有要显示的参数的数组
Dim FirstPoint1 As Variant Rem 第一个变量
Dim tempvar As Variant Rem 中间变量
Dim strStartTime, strEndTime Rem 报表查询的时间范围
Dim Interval As Variant Rem 报表查询的间隔时间
Dim OutReportfile As Variant Rem 输出EXCEL表格的文件名
Dim TemplateName As String Rem 这个是日报表模板的文件名
3) 建立对EXCEL的引用,并打开报表的模板文件:
Set msExcel = CreateObject("Excel.Application")
With msExcel
.WindowState = xlMinimized
.Visible = False
.Workbooks.Open ReportTemplateName, , False Rem 打开报表的模板文件
.ActiveWorkbook.ActiveSheet.Select
.DisplayAlerts = False
.DisplayAlerts = False
.Wait (Now() + 0.00002)
End With
4) 创建SQL查询语句:
Dim rsADO As New ADODB.Recordset
Dim cnADO As New ADODB.Connection
Dim SQL0,SQL1 AS String
SQLO = "select FIX.value from FIX where FIX.interval=|" + Interval + "| and FIX.datetime>={ts|" + strStartTime + "|} and FIX.datetime<{ts|" + strEndTime + "|}" Rem FIX为本地节点名
SQL1 = SQLO & " and (FIX.tag=|" & FirstPoint1 & "|"
iTotalCols = 1
For Each tempvar In FirstReportPoints
iTotalCols = iTotalCols + 1
SQL1 = SQL1 & " or FIX.tag=|" & tempvar & "|"
Next tempvar
SQL1 = SQL1 + ")"
5) 执行对数据库的查询:
Set cnADO = New ADODB.Connection
With cnADO
Rem .CursorLocation = adUseClient
.Open "PROVIDER = Microsoft OLE DB Provider for ODBC Drivers;dsn=FIX Dynamics Historical Data;uid=sa;pwd=;"
.Execute (SQL1)
End With
6) 建立查询数据库后的记录集,并把数据写到EXCEL中后另存为EXCEL文件:
Set rsADO = New ADODB.Recordset
rsADO.CursorLocation = adUseClient
rsADO.Open SQL1, cnADO, adOpenForwardOnly, adLockReadOnly
If rsADO.BOF Then
rsADO.Close
cnADO.Close
With msExcel
DoEvents
.ActiveWorkbook.Close
.Quit
End With
Set msExcel = Nothing
Rem MsgBox "第一个表查询条件为空,请检查查询条件"
Exit Sub
Else
c = 1
While rsADO.EOF <> True
With msExcel.Worksheets(1)
For j = 1 To 24
If rsADO(0) <> "" Then
msExcel.Worksheets(1).Cells(j, c).Value = rsADO(0)
rsADO.MoveNext
End If
Next j
End With
c = c + 1
Wend
msExcel.ActiveWorkbook.SaveAs "d:\" & OutReportfile & ".xls"
msExcel.Quit
msExcel.DisplayAlerts = True
msExcel.Visible = True
Set msExcel = Nothing
Set cnADO = Nothing
rsADO.Close
正在阅读:
IFIX与EXCEL的连接08-06
试卷总05-09
VBA正则表达式入门与提高04-27
xx垃圾电厂污水处理设计方案 - 图文04-21
工程技术研究中心管理办法(章程)01-21
CCTV-MTV_音乐盛典颁奖晚会08-25
关于设备日常保养、操作注意事项06-18
小报--走进澳大利亚- 杭州市余杭高级中学 首页 - 图文01-04
幼儿园工会工作总结4篇_工会工作总结07-30
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 连接
- EXCEL
- IFIX
- 温水煮青蛙的启示:电力企业危机管理的思考
- 县发改委2010年上半年工作总结与下半年工作安排
- 下列软件中,属于系统软件的是______。 A.C++编译程序B.Ex
- 中国神龙之谜的揭破
- 医院固定资产管理制度
- 2014安徽事业单位考试时政热点:9月18日时事政治热点
- 跨网段共享打印机
- 2015年中国石油大学(华东)考研安全工程综合复试资料
- 洛阳牡丹生产实习报告
- 万东F52—8C医用500毫安X射线机影像增强器故障及维修
- 进口计量器具检定申请书
- 2018年德育副校长述廉报告与2018年教学副校长述职报告汇编
- 简述螺杆式空压机主机周期性大修
- 斯派瑞沙克APT10自动疏水阀泵
- 石阡县汤山镇荆坪幼儿园安全教育第一课简报 - (2)
- 水声学-海洋中的混响2
- 高中生物复习重点知识及典型例题总结
- 国际金融危机对我国就业造成的影响
- 环刀法压实度实验
- 线性代数知识点典型题