您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > ifix报表制作文档
Ifix报表的实现本文档主要介绍Ifix通过调度将报表数据按照一定要求存储到Access数据库中,并根据要求从其中提取数据,结合EXCELL的制表功能实现报表。数据存入1.数据库的建立和数据关联方法:(1)直接在Microsoftoffice中建立Access文件。(2)在控制面板里ODBC数据源管理器里关联数据库时创建Access数据库。1.1数据库的建立(1)打开新建的Access文件,点击。(2)创建一个,名字为ReportData的表。在表名处右键鼠标点击,将字段名称,数据类型,字段属性更改为下图所示:Ifix时间调度触发调度中的VB脚本Access数据库报表显示创建表设计视图1.2数据库的关联按照开始→设置→控制面板→管理工具→数据源的操作顺序进入数据库引用关联定义画面如下图。在其中选择点击SystemDSN,再点击ADD…命令,在弹出的选择列表中选择MicrosoftAccessDriver[*.mdb],再点击完成按钮,进入下边的窗口,在其中的数据源名(N)后的输入区中填写一个名字,然后在数据库栏中点击选择(S)按钮,选择刚才定义的数据库文件名即可。在以后的应用中只使用DSN(数据源名)名,不使用数据名。2.时间调度的建立2.1在ifix里新建基于时间的调度,在Schedules新建一个调度文件,在TimeBasedEntries中创建一个调度,具体设置如下图:注意:iFIX不支持使用与本地节点名相同名称的调度。因此,不能创建与本地节点名相同的调度。触发信息设置为continuous,间隔为1个小时,启动时间为第2分钟。点击VbEditor将以下脚本写入PrivateSubRW2REPORT_OnTimeOut(ByVallTimerIdAsLong)DimcnAsADODB.Connection'定义一个ADO方式的数据库连接DimresAsADODB.Recordset'定义一个ADO方式的数据库记录集DimStrSQLAsStringSetcn=NewADODB.Connection'定义cn为新的ADO数据库连接Setres=NewADODB.Recordset'定义res为新的ADO数据库连接集'OnErrorResumeNextcn.ConnectionString=DSN=ReportSource;UID=;PWD=;'定义cn的连接数据源为ReportSource即ODBC中建立的ACCESS的数据源名cn.OpenStrSQL=select*fromReportDataWhere日期=#&Date'使用SQL语句查找ReportData表中日期为Date的数据res.OpenStrSQL,cn,adOpenKeyset,adLockOptimisticres.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.RW2.RW_Y0GBN11AP002_ZS.f_cv'在3列加入标签2res.Update'保存记录Update(当Edit或AddNew方法完成后保存记录集)res.Close'关闭记录集cn.CloseSetres=NothingSetcn=NothingEndSubODBC数据源名称在vb的菜单栏点击工具→引用,添加一下控件:2.2添加到FixBackgroundServer任务打开SCU,点击configure→Task如图所示:在文件名内查找FixBackgroundServer.exe文件添加后保存SCU文件。2.3在后台任务启动列表中添加调度点击settings→userpreferences进入如下图界面,添加后台启动项3同时在Report画面里,添加WEB控件:4报表生成在IFIX画面上插入一个按钮。按钮名称:CommandButton1报表生成按钮代码如下:PrivateSubCommandButton1_Click()'OnErrorResumeNextDimcnAsADODB.ConnectionDimresAsADODB.RecordsetDimxlAppAsExcel.ApplicationDimxlBookAsExcel.WorkbookDimxlsheet1AsExcel.WorksheetDimxlsheet2AsExcel.WorksheetDimstrFileNameAsStringDimStrSQLAsStringDimiAsIntegerDimrowAsIntegerDimCreatDayReportAsBooleanWebBrowser.NavigateE:\空报表.htmstrFileName=E:\ReportView.htm'预先设计的报表显示模板文件,存放路径C:\DocumentsandSettings\Administrator\桌面实际看工程存放路径这里是测试StrSQL=select*fromReportDatawhere日期=#&Calendar.Value'使用SQL语句查询Calendar日历上日期的数据IfDir(strFileName)=Then'判断文件是否存在,不存在则退出MsgBox报表模版文件不存在ExitSubEndIfSetcn=NewADODB.Connection'新建连接cn.ConnectionString=DSN=ReportSource;UID=;PWD=;'连接到ReportSource数ODBC数据源名称据源cn.Open'打开连接Setres=NewADODB.Recordset'新建记录集res.OpenStrSQL,cn,adOpenKeyset,adLockOptimisticIfres.RecordCount=0Then'RecordCount记录集中记录的数量。若无法判断记录条数则返回-1MsgBox你要查询的数据不存在,可能已被删除,vbInformation+vbOKOnly,系统提示res.CloseSetres=Nothingcn.CloseSetcn=NothingExitSubElseres.MoveFirst'将记录指针移动到第一行SetxlApp=NewExcel.Application'新建ExcelSetxlBook=xlApp.Workbooks.Open(E:\ReportView.htm)'SetxlBook=GetObject(strFileName)'打开模版XLS文件Setxlsheet1=xlBook.Worksheets(1)Setxlsheet2=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=0Whileires.RecordCountrow=res.Fields(1)+4'利用时间排序xlsheet1.Cells(row,b)=res.Fields(2)xlsheet1.Cells(row,c)=res.Fields(3)i=i+1res.MoveNextWendxlApp.DisplayAlerts=FalsexlBook.SaveAsE:\ReportView.htm'保存以日报表.htm格式来保存报表xlApp.DisplayAlerts=True'将日报表显示出来xlApp.QuitSetxlsheet1=NothingSetxlsheet2=NothingSetxlBook=NothingSetxlApp=NothingCreatDayReport=TrueIfCreatDayReport=TrueThenWebBrowser.Navigatee:\ReportView.htmElseWebBrowser.Navigatee:\空报表.htmEndIfEndIfEndSub以上对于数据代码部分,添加的数据名称、数量要以本身项目所对数据库为基准。5保存报表在IFIX中插入一个按钮,,命名为:CommandButton2保存报表按钮代码如下:PrivateSubCommandButton2_Click()DimFileNameAsStringOnErrorGoToerrHandlerDimstrReportAsString'DimmydateAsDate'mydate=DatestrReport=日报表'IfMe.DayControl=TrueThenstrReport=日报表'IfMe.MonthControl=TrueThenstrReport=月报表OnErrorResumeNextSetxlApp=GetObject(,Excel.Application)IfErr.Number0ThenSetxlApp=CreateObject(Excel.Application)ElseSetxlApp=GetObject(,Excel.Application)xlApp.ScreenUpdating=TrueEndIfErr.ClearOnErrorGoToerrHandler'SetxlApp=getobjece(,excel.application)'xlApp.ScreenUpdating=TruexlApp.DisplayAlerts=FalseSetxlBook=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:\DocumentsandSettings\Administrator\桌面\&Format(Calendar.Value,yyyy-MM-dd)&strReport&.xlsFileName=E:\&Format(Calendar.Value,yyyy-MM-dd)&strReport&.xlsx'dlgSaveAs.Filename=strReport'dlgSaveAs.FilterIndex=2'dlgSaveAs.ShowSave'xlBook.SaveAsFilename:=dlgSaveAs.Filename,FileFormat:=xlNormal,Password:=,WriteResPassword:=,ReadOnlyRecommended:=False,CreateBackup:=FalsexlBook.SaveAsFileNamexlApp.DisplayAlerts=TrueSetxlsheet1=NothingSetxlsheet2=NothingSetxlBook=NothingxlApp.Quit'xlApp.Visible=TrueSetxlApp=NothingExitSuberrHandler:xlApp.DisplayAlerts=TrueSetxlsheet1=NothingSetxlsheet2=NothingSetxlBook=NothingxlApp.Quit'xlApp.Visible=True
本文标题:ifix报表制作文档
链接地址:https://www.777doc.com/doc-2997086 .html