ifix报表制作文档教学内容.docx

上传人:b****7 文档编号:8681933 上传时间:2023-02-01 格式:DOCX 页数:14 大小:461.96KB
下载 相关 举报
ifix报表制作文档教学内容.docx_第1页
第1页 / 共14页
ifix报表制作文档教学内容.docx_第2页
第2页 / 共14页
ifix报表制作文档教学内容.docx_第3页
第3页 / 共14页
ifix报表制作文档教学内容.docx_第4页
第4页 / 共14页
ifix报表制作文档教学内容.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

ifix报表制作文档教学内容.docx

《ifix报表制作文档教学内容.docx》由会员分享,可在线阅读,更多相关《ifix报表制作文档教学内容.docx(14页珍藏版)》请在冰豆网上搜索。

ifix报表制作文档教学内容.docx

ifix报表制作文档教学内容

Ifix报表的实现

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

数据存入

 

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

方法:

(1)直接在Microsoftoffice中建立Access文件。

(2)在控制面板里ODBC数据源管理器里关联数据库时创建Access数据库。

1.1数据库的建立

(1)打开新建的Access文件,点击。

(2)创建一个,名字为ReportData的表。

在表名处右键鼠标点击

设计视图

,将字段名称,数据类型,字段属性更改为下图所示:

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方式的数据库记录集

DimStrSQLAsString

Setcn=NewADODB.Connection'定义cn为新的ADO数据库连接

Setres=NewADODB.Recordset'定义res为新的ADO数据库连接集

'OnErrorResumeNext

cn.ConnectionString="DSN=ReportSource;UID=;PWD=;"'定义cn的连接数据源为ReportSource即ODBC中建立的ACCESS的数据源名

cn.Open

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

res.OpenStrSQL,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

Setres=Nothing

Setcn=Nothing

EndSub

在vb的菜单栏点击工具→引用,添加一下控件:

2.2添加到FixBackgroundServer任务

打开SCU,点击configure→Task如图所示:

在文件名内查找FixBackgroundServer.exe文件添加后保存SCU文件。

2.3在后台任务启动列表中添加调度

点击settings→userpreferences进入如下图界面,添加后台启动项

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

4报表生成

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

按钮名称:

CommandButton1

报表生成按钮代码如下:

PrivateSubCommandButton1_Click()

'OnErrorResumeNext

DimcnAsADODB.Connection

DimresAsADODB.Recordset

DimxlAppAsExcel.Application

DimxlBookAsExcel.Workbook

Dimxlsheet1AsExcel.Worksheet

Dimxlsheet2AsExcel.Worksheet

DimstrFileNameAsString

DimStrSQLAsString

DimiAsInteger

DimrowAsInteger

DimCreatDayReportAsBoolean

WebBrowser.Navigate"E:

\空报表.htm"

strFileName="E:

\ReportView.htm"'预先设计的报表显示模板文件,存放路径C:

\DocumentsandSettings\Administrator\桌面实际看工程存放路径这里是测试

StrSQL="select*fromReportDatawhere日期=#"&Calendar.Value&"#"'使用SQL语句查询Calendar日历上日期的数据

IfDir(strFileName)=""Then'判断文件是否存在,不存在则退出

MsgBox"报表模版文件不存在"

ExitSub

EndIf

Setcn=NewADODB.Connection'新建连接

cn.ConnectionString="DSN=ReportSource;UID=;PWD=;"'连接到ReportSource数据源

cn.Open'打开连接

Setres=NewADODB.Recordset'新建记录集

res.OpenStrSQL,cn,adOpenKeyset,adLockOptimistic

Ifres.RecordCount<=0Then'RecordCount记录集中记录的数量。

若无法判断记录条数则返回-1

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

res.Close

Setres=Nothing

cn.Close

Setcn=Nothing

ExitSub

Else

res.MoveFirst'将记录指针移动到第一行

SetxlApp=NewExcel.Application'新建Excel

SetxlBook=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=0

Whilei

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

Setxlsheet1=Nothing

Setxlsheet2=Nothing

SetxlBook=Nothing

SetxlApp=Nothing

CreatDayReport=True

IfCreatDayReport=TrueThen

WebBrowser.Navigate"e:

\ReportView.htm"

Else

WebBrowser.Navigate"e:

\空报表.htm"

EndIf

EndIf

EndSub

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

5保存报表

在IFIX中插入一个按钮,

,命名为:

CommandButton2

保存报表按钮代码如下:

PrivateSubCommandButton2_Click()

DimFileNameAsString

OnErrorGoToerrHandler

DimstrReportAsString

'DimmydateAsDate

'mydate=Date

strReport="日报表"

'IfMe.DayControl=TrueThenstrReport="日报表"

'IfMe.MonthControl=TrueThenstrReport="月报表"

OnErrorResumeNext

SetxlApp=GetObject(,"Excel.Application")

IfErr.Number<>0Then

SetxlApp=CreateObject("Excel.Application")

Else

SetxlApp=GetObject(,"Excel.Application")

xlApp.ScreenUpdating=True

EndIf

Err.Clear

OnErrorGoToerrHandler

'SetxlApp=getobjece(,"excel.application")

'xlApp.ScreenUpdating=True

xlApp.DisplayAlerts=False

SetxlBook=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&".xls"

FileName="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:

=False

xlBook.SaveAsFileName

xlApp.DisplayAlerts=True

Setxlsheet1=Nothing

Setxlsheet2=Nothing

SetxlBook=Nothing

xlApp.Quit

'xlApp.Visible=True

SetxlApp=Nothing

ExitSub

errHandler:

xlApp.DisplayAlerts=True

Setxlsheet1=Nothing

Setxlsheet2=Nothing

SetxlBook=Nothing

xlApp.Quit

'xlApp.Visible=True

SetxlApp=Nothing

MsgBox"保存出错!

"

EndSub

6报表日期查询功能添加

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

CalendarControl11.0;

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

PrivateSubCFixPicture_Initialize()'对日历控件初始化

Calendar.Value=Date

EndSub

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

打印按钮代码如下:

PrivateSubcmdPrint_Click()

OnErrorResumeNext

'日报页面设置

IfCalendar.Value=TrueThen

PrintSet"0.5","0.5","0.5","0.5"

EndIf

WebBrowser.ExecWB6,OLECMDEXECOPT_PROMPTUSER

EndSub

打印页面设置代码如下:

PrivateSubPrintSet(sBottomAsString,strTopAsString,sLeftAsString,sMargin_rightAsString)

Dimhkey_root,hkey_path,hkey_keyAsString

DimRegWshAsObject

hkey_root="HKEY_CURRENT_USER"

hkey_path="\Software\Microsoft\InternetExplorer\PageSetup"

'//设置网页打印的页眉页脚为空

SetRegWsh=CreateObject("WScript.Shell")

hkey_key="\header"'页眉

RegWsh.RegWritehkey_root+hkey_path+hkey_key,""

hkey_key="\footer"'页脚

RegWsh.RegWritehkey_root+hkey_path+hkey_key,""

hkey_key="\margin_bottom"'下页边距

RegWsh.RegWritehkey_root+hkey_path+hkey_key,sBottom'

hkey_key="\margin_top"'上页边距

RegWsh.RegWritehkey_root+hkey_path+hkey_key,strTop'

hkey_key="\margin_left"'左页边距

RegWsh.RegWritehkey_root+hkey_path+hkey_key,sLeft'

hkey_key="\margin_right"'右页边距

RegWsh.RegWritehkey_root+hkey_path+hkey_key,sMargin_right'

'打印

EndSub

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1