ifix报表制作文档

2025-10-25

Ifix报表的实现

本文档主要介绍Ifix 通过调度将报表数据按照一定要求存储到Access数据库中,并根据要求从其中提取数据,结合EXCELL的制表功能实现报表。

1.数据库的建立和数据关联

方法:(1)直接在Microsoft office中建立Access文件。 (2)在控制面板里ODBC数据源管理器里关联数据库时创建Access数据库。 1.1数据库的建立

(1)打开新建的Access 。

(2)创建一个,名字为ReportData的表。在表名处右键鼠标点击

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 String

Set cn = New ADODB.Connection '定义cn为新的ADO数据库连接

为新的ADO数据库连接集 'On Error Resume Next 定义cn的连接数据源为ReportSource 即ODBC中建立的ACCESS的数据源名 cn.Open

StrSQL = "select * from ReportData Where 日期=#" & Date & "#" '使用SQL语句查找ReportData表中日期为Date的数据

res.Open StrSQL, cn, adOpenKeyset, adLockOptimistic res.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.Close

Set res = Nothing Set cn = Nothing End Sub

在vb

2.2

添加到FixBackgroundServer 任务

打开

SCU,点击

如图所示:

在文件名内查找FixBackgroundServer.exe文件添加后保存SCU文件。 2.3在后台任务启动列表中添加调度

点击

入如下图界面,添加后台启动项

3同时在Report画面里,添加WEB控件:

4 报表生成

在IFIX画面上插入一个按钮。

按钮名称:CommandButton1 报表生成按钮代码如下:

Private Sub CommandButton1_Click() 'On Error Resume Next

Dim cn As ADODB.Connection Dim res As ADODB.Recordset Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlsheet1 As Excel.Worksheet Dim xlsheet2 As Excel.Worksheet Dim strFileName As String Dim StrSQL As String Dim i As Integer Dim row As Integer

Dim CreatDayReport As Boolean

WebBrowser.Navigate "E:\空报表.htm"

strFileName = "E:\ReportView.htm" '预先设计的报表显示模板文件,存放路径C:\Documents and Settings\Administrator\桌面 实际看工程存放路径这里是测试 StrSQL = "select * from ReportData where 日期=#" & Calendar.Value & "#" '使用SQL语句查询Calendar日历上日期的数据

If Dir(strFileName) = "" Then '判断文件是否存在,不存在则退出 MsgBox "报表模版文件不存在" Exit Sub End If

Set cn = New ADODB.Connection '新建连接

cn.ConnectionString =

连接到ReportSource数

据源

cn.Open '打开连接

Set res = New ADODB.Recordset '新建记录集

res.Open StrSQL, cn, adOpenKeyset, adLockOptimistic

If res.RecordCount <= 0 Then 'RecordCount 记录集中记录的数量。若无法判断记录条数则返回-1

MsgBox "你要查询的数据不存在,可能已被删除", vbInformation + vbOKOnly, "系统提示" res.Close

Set res = Nothing cn.Close

Set cn = Nothing Exit Sub Else

res.MoveFirst '将记录指针移动到第一行 Set xlApp = New Excel.Application '新建Excel

Set xlBook = xlApp.Workbooks.Open("E:\ReportView.htm") 'Set xlBook = GetObject(strFileName) '打开模版XLS文件 Set xlsheet1 = xlBook.Worksheets(1) Set xlsheet2 = xlBook.Worksheets(2)

xlBook.Worksheets.Application.Visible = False ' 设置第一张表为可视 xlsheet1.Range("b4", "g27") = "" 'b4列g27行清空 xlsheet2.Range("b4", "g27") = "" 'b4列g27行清空

xlsheet1.Cells(2, "A") = CDate(res.Fields(0)) '获取日期 CDate转换为幼小日期

xlsheet2.Cells(2, "A") = CDate(res.Fields(0)) '获取日期 CDate转换为幼小日期

i = 0

While i < res.RecordCount

row = res.Fields(1) + 4 '利用时间排序 xlsheet1.Cells(row, "b") = res.Fields(2) xlsheet1.Cells(row, "c") = res.Fields(3)

i = i + 1

res.MoveNext Wend

xlApp.DisplayAlerts = False

xlBook.SaveAs "E:\ReportView.htm" '保存 以日报表.htm格式来保存报表 xlApp.DisplayAlerts = True '将日报表显示出来 xlApp.Quit

Set xlsheet1 = Nothing Set xlsheet2 = Nothing Set xlBook = Nothing Set xlApp = Nothing

CreatDayReport = True

If CreatDayReport = True Then

WebBrowser.Navigate "e:\ReportView.htm" Else

WebBrowser.Navigate "e:\空报表.htm" End If End If End Sub

以上对于数据代码部分,添加的数据名称、数量要以本身项目所对数据库为基准。

5保存报表

在IFIX中插入一个按钮,

,命名为:CommandButton2

保存报表按钮代码如下:

Private Sub CommandButton2_Click() Dim FileName As String On Error GoTo errHandler Dim strReport As String 'Dim mydate As Date 'mydate = Date

strReport = "日报表"

'If Me.DayControl = True Then strReport = "日报表" 'If Me.MonthControl = True Then strReport = "月报表" On Error Resume Next

Set xlApp = GetObject(, "Excel.Application") If Err.Number <> 0 Then

Set xlApp = CreateObject("Excel.Application") Else

Set xlApp = GetObject(, "Excel.Application") xlApp.ScreenUpdating = True End If Err.Clear

On Error GoTo errHandler

'Set xlApp = getobjece(, "excel.application") 'xlApp.ScreenUpdating = True xlApp.DisplayAlerts = False

Set xlBook = xlApp.Workbooks.Open("E:\ReportView.htm") xlApp.Visible = False

' dlgSaveAs.CancelError = True

' dlgSaveAs.Flags = cdlOFNHideReadOnly

' dlgSaveAs.Filter = "HTML 文件(*.HTM)|*.HTM|EXCEL 文件(*.xls)|*.xls"

' dlgSaveAs.FileName = "C:\Documents and Settings\Administrator\桌面\" & Format(Calendar.Value, "yyyy-MM-dd") & strReport & ".xls"

FileName = "E:\" & Format(Calendar.Value, "yyyy-MM-dd") & strReport &

'dlgSaveAs.Filename = strReport ' dlgSaveAs.FilterIndex = 2 'dlgSaveAs.ShowSave

'xlBook.SaveAs Filename:=dlgSaveAs.Filename, FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False

xlBook.SaveAs FileName xlApp.DisplayAlerts = True Set xlsheet1 = Nothing Set xlsheet2 = Nothing Set xlBook = Nothing xlApp.Quit

' xlApp.Visible = True Set xlApp = Nothing Exit Sub errHandler:

xlApp.DisplayAlerts = True Set xlsheet1 = Nothing Set xlsheet2 = Nothing Set xlBook = Nothing xlApp.Quit

' xlApp.Visible = True Set xlApp = Nothing MsgBox "保存出错!" End Sub

6 报表日期查询功能添加

打开IFIX报表画面,点击工具箱TOOLBOX,单击OLE,,选择日历控件:Calendar Control 11.0;

日历控件必须初始化,初始化代码如下:

Private Sub CFixPicture_Initialize() '对日历控件初始化 Calendar.Value = Date

至此IFIX报表ODBC已经组态完成,若需要打印报表,则添加打印按钮:

打印按钮代码如下:

Private Sub cmdPrint_Click() On Error Resume Next '日报页面设置

If Calendar.Value = True Then

PrintSet "0.5", "0.5", "0.5", "0.5" End If

WebBrowser.ExecWB 6, OLECMDEXECOPT_PROMPTUSER End Sub

打印页面设置代码如下:

Private Sub PrintSet(sBottom As String, strTop As String, sLeft As String, sMargin_right As String)

Dim hkey_root, hkey_path, hkey_key As String Dim RegWsh As Object

hkey_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 Sub


ifix报表制作文档.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:B超设备行业现状及发展趋势分析

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219