




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Ifix报表的实现本文档主要介绍Ifix 通过调度将报表数据按照一定要求存储到Access数据库中,并根据要求从其中提取数据,结合EXCELL的制表功能实现报表。Ifix时间调度触发调度中的VB脚本Access数据库报表显示数据存入 1.数据库的建立和数据关联方法:(1)直接在Microsoft office中建立Access文件。 (2)在控制面板里ODBC数据源管理器里关联数据库时创建Access数据库。 1.1数据库的建立表创建 (1)打开新建的Access文件,点击 。 (2)创建一个,名字为ReportData的表。在表名处右键鼠标点击设计视图 ,将字段名称,数据类型,字段属性更改为下图所示:1.2数据库的关联按照开始设置控制面板管理工具数据源的操作顺序进入数据库引用关联定义画面如下图。在其中选择点击System DSN,再点击ADD命令,在弹出的选择列表中选择Microsoft Access Driver*.mdb,再点击完成按钮,进入下边的窗口,在其中的数据源名(N)后的输入区中填写一个名字,然后在数据库栏中点击选择(S)按钮,选择刚才定义的数据库文件名即可。在以后的应用中只使用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数据库连接 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 日期=# & 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.RW2.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在后台任务启动列表中添加调度点击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 Excel.WorksheetDim xlsheet2 As Excel.WorksheetDim strFileName As StringDim StrSQL As StringDim i As IntegerDim row As IntegerDim CreatDayReport As Boolean WebBrowser.Navigate E:空报表.htmstrFileName = E:ReportView.htm 预先设计的报表显示模板文件,存放路径C:Documents and SettingsAdministrator桌面 实际看工程存放路径这里是测试StrSQL = select * from ReportData where 日期=# & Calendar.Value & # 使用SQL语句查询Calendar日历上日期的数据If Dir(strFileName) = Then 判断文件是否存在,不存在则退出 MsgBox 报表模版文件不存在 Exit SubEnd IfSet cn = New ADODB.Connection 新建连接ODBC数据源名称cn.ConnectionString = 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 你要查询的数据不存在,可能已被删除, 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 StringOn 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.ClearOn 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 SettingsAdministrator桌面 & Format(Calendar.Value, yyyy-MM-dd) & strReport & .xls FileName = E: & Format(Calendar.Value, yyyy-MM-dd) & strReport & .xlsx 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 SuberrHandler: xlApp.DisplayAlerts = True Set xlsheet1 = Nothing Set xlsheet2 = Nothing Set xlBook = Nothing xlApp.Quit xlApp.Visible = True Set xlApp = Nothing 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 日报页面设置 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 St
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年综合类-世博会知识竞赛-普法知识竞赛历年真题摘选带答案(5卷单选题百道集合)
- 大额现金管理办法河北
- 小学总务支出管理办法
- 大连仓库资格管理办法
- 2025年煤炭矿山职业技能鉴定考试-胶带输送机维修工历年参考题库含答案解析(5套100道单选题合辑)
- 家长会课件官网
- 2025年煤炭矿山职业技能鉴定考试-煤浆制备考试历年参考题库含答案解析(5套100道单选题合辑)
- 2025年煤炭矿山职业技能鉴定考试-掘进工历年参考题库含答案解析(5套100道单选题合辑)
- 2025年火电电力职业技能鉴定考试-线路运行与检修综合练习历年参考题库含答案解析(5套共100道单选题合辑)
- 2025年火电电力职业技能鉴定考试-电厂电机专业技能考试历年参考题库含答案解析(5套共100道单选题合辑)
- GB/T 3211-2008金属铬
- GB/T 12703.7-2010纺织品静电性能的评定第7部分:动态静电压
- ps6000自动化系统用户操作及问题处理培训
- 2023年韶关市法院书记员招聘笔试模拟试题及答案解析
- 革兰氏阴性菌课件
- 聘用证书合集通用PPT模板
- 建筑工程文件归档管理明细表
- 海姆立克手法理论知识、临床应用及注意事项考核试题与答案
- 碱性脱漆剂配方
- DB32∕T 186-2015 建筑消防设施检测技术规程
- XX公司“十四五”战略发展规划及年度评价报告(模板)
评论
0/150
提交评论