ifix报表制作文档_第1页
ifix报表制作文档_第2页
ifix报表制作文档_第3页
ifix报表制作文档_第4页
ifix报表制作文档_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Ifix报表的实现本文档主要介绍Ifix 通过调度将报表数据按照一定要求存储到Access数据库中,并根据要求从其中提取数据,结合EXCELL的制表功能实现报表。Ifix时间调度触发调度中的VB脚本Access数据库报表显示数据存入 1.数据库的建立和数据关联方法:(1)直接在Microsoft office中建立Access文件。 (2)在控制面板里ODBC数据源管理器里关联数据库时创建Access数据库。 1.1数据库的建立表创建 (1)打开新建的Access文件,点击 。 (2)创建一个,名字为ReportData的表。在表名处右键鼠标点击设计视图 ,将字段名称,数据类型,字段属性更改为

2、下图所示:1.2数据库的关联按照开始设置控制面板管理工具数据源的操作顺序进入数据库引用关联定义画面如下图。在其中选择点击System DSN,再点击ADD命令,在弹出的选择列表中选择Microsoft Access Driver*.mdb,再点击完成按钮,进入下边的窗口,在其中的数据源名(N)后的输入区中填写一个名字,然后在数据库栏中点击选择(S)按钮,选择刚才定义的数据库文件名即可。在以后的应用中只使用DSN(数据源名)名,不使用数据名。2时间调度的建立2.1在ifix里新建基于时间的调度,在Schedules新建一个调度文件,在Time Based Entries中创建一个调度,具体设置如

3、下图:注意: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.Co

4、nnection '定义cn为新的ADO数据库连接 Set res = New ADODB.Recordset '定义res为新的ADO数据库连接集ODBC 数据源名称 'On Error Resume Nextcn.ConnectionString = "DSN=ReportSource;UID=;PWD=;" '定义cn的连接数据源为ReportSource 即ODBC中建立的ACCESS的数据源名 cn.Open StrSQL = "select * from ReportData Where 日期=#" &

5、 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列加入标签1res.Fields(3) = Fix32.RW

6、2.RW_Y0GBN11AP002_ZS.f_cv '在3列加入标签2 res.Update '保存记录 Update(当Edit或AddNew方法完成后保存记录集) res.Close '关闭记录集cn.Close Set res = Nothing Set cn = NothingEnd Sub 在vb的菜单栏点击工具引用,添加一下控件:2.2添加到FixBackgroundServer 任务 打开SCU,点击configureTask 如图所示:在文件名内查找FixBackgroundServer.exe文件添加后保存SCU文件。2.3在后台任务启动列表中添加调度

7、点击settingsuser preferences进入如下图界面,添加后台启动项3同时在Report画面里,添加WEB控件:4 报表生成在IFIX画面上插入一个按钮。按钮名称:CommandButton1报表生成按钮代码如下:Private Sub CommandButton1_Click()'On Error Resume NextDim cn As ADODB.ConnectionDim res As ADODB.RecordsetDim xlApp As Excel.ApplicationDim xlBook As Excel.WorkbookDim xlsheet1 As E

8、xcel.WorksheetDim xlsheet2 As Excel.WorksheetDim strFileName As StringDim StrSQL As StringDim i As IntegerDim row As IntegerDim CreatDayReport As Boolean WebBrowser.Navigate "E:空报表.htm"strFileName = "E:ReportView.htm" '预先设计的报表显示模板文件,存放路径C:Documents and SettingsAdministrator桌面

9、 实际看工程存放路径这里是测试StrSQL = "select * from ReportData where 日期=#" & Calendar.Value & "#" '使用SQL语句查询Calendar日历上日期的数据If Dir(strFileName) = "" Then '判断文件是否存在,不存在则退出 MsgBox "报表模版文件不存在" Exit SubEnd IfSet cn = New ADODB.Connection '新建连接ODBC数据源名称cn.Co

10、nnectionString = "DSN=ReportSource;UID=;PWD=;" '连接到ReportSource数据源cn.Open '打开连接Set res = New ADODB.Recordset '新建记录集res.Open StrSQL, cn, adOpenKeyset, adLockOptimisticIf res.RecordCount <= 0 Then 'RecordCount 记录集中记录的数量。若无法判断记录条数则返回-1 MsgBox "你要查询的数据不存在,可能已被删除",

11、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) '打

12、开模版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行清空 x

13、lsheet1.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, &qu

14、ot;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 CreatDayRe

15、port = 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 StringOn

16、 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.

17、Application") If Err.Number <> 0 Then Set xlApp = CreateObject("Excel.Application") Else Set xlApp = GetObject(, "Excel.Application") xlApp.ScreenUpdating = True End If Err.ClearOn Error GoTo errHandler 'Set xlApp = getobjece(, "excel.application") 'x

18、lApp.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" &

19、#39; dlgSaveAs.FileName = "C:Documents and SettingsAdministrator桌面" & Format(Calendar.Value, "yyyy-MM-dd") & strReport & ".xls" FileName = "E:" & Format(Calendar.Value, "yyyy-MM-dd") & strReport & ".xlsx" 'dlgSav

20、eAs.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 =

21、 True Set xlsheet1 = Nothing Set xlsheet2 = Nothing Set xlBook = Nothing xlApp.Quit' xlApp.Visible = True Set xlApp = Nothing Exit SuberrHandler: xlApp.DisplayAlerts = True Set xlsheet1 = Nothing Set xlsheet2 = Nothing Set xlBook = Nothing xlApp.Quit' xlApp.Visible = True Set xlApp = Nothing

22、 MsgBox "保存出错!"End Sub6 报表日期查询功能添加打开IFIX报表画面,点击工具箱TOOLBOX,单击OLE,,选择日历控件:Calendar Control 11.0;日历控件必须初始化,初始化代码如下:Private Sub CFixPicture_Initialize() '对日历控件初始化Calendar.Value = DateEnd Sub至此IFIX报表ODBC已经组态完成,若需要打印报表,则添加打印按钮:打印按钮代码如下:Private Sub cmdPrint_Click()On Error Resume Next '日报

23、页面设置 If Calendar.Value = True Then PrintSet "0.5", "0.5", "0.5", "0.5" End If WebBrowser.ExecWB 6, OLECMDEXECOPT_PROMPTUSEREnd 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 = "Soft

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论