PB中使用FORMULA ONE

 
PB中使用FORMULA ONE
 

  以一个例子来详细说明F1的用法。此例为电力企业停电申请票的上报审批过程,内含过程权限控制,每一权限只能修改F1报表的一个部分,且有做图功能,采用PB 6.5 和 F1 6 所编,下面将详细说明:  4.读模板的内容至控件:

 

declare instance variables:

BLOB vcf_form

declare global variables:

string gs_ztm,gs_lrdw,gs_gldw

datetime gd_lrsj,gd_tdsj

在窗口的OPEN事件中写脚本:

datetime sj

int fh

string ls_dwmc

em_1.text=string(gd_tdsj,"yyyy年mm月dd日hh:mm")

selectblob SQPNR into :vcf_form from DFS_TDSQP

where LRSJ=:gd_lrsj and LRDW=:gs_lrdw

using sqlca;//取出库中申请票内容

if isnull(vcf_form) then

ole_1.object.Read("模板.vts", ref fh)//把模板读入OLE控件

ole_1.object.setactivecell(21,2)

ole_1.object.Entry=string(gd_tdsj,"mm月dd日hh时mm分至")//填入计划停电时间

ole_1.object.setactivecell(4,3)

select ZZ_DWMC into :ls_dwmc from B04 where ZZ_DWBM=:gs_lrdw;

ole_1.object.Entry=ls_dwmc//填入计划停电单位

ole_1.object.setactivecell(4,6)

ole_1.object.Entry=xm//填入姓名

else

if fileexists("c:/book1.vts") then

filedelete("c:/book1.vts")

end if

fh=fileopen("c:/book1.vts",streammode!,write!)//建一临时文件

if fh<>-1 then

filewrite(fh,vcf_form)//把库中的库中申请票内容写入临时文件

fileclose(fh)

ole_1.object.Read("c:/book1.vts", ref fh)//把临时文件内容读入控件

else

MessageBox("错误提示", "打开文件操作错误!")

close(this)

return

end if

END IF

 

CHOOSE CASE qx

CASE "lr"//权限为二级单位录入时只能录入左半边的报表

ole_1.object.selection="A1:G38"

ole_1.object.setprotection(false,false)//将A1:G38的单元格置为可写,其余不可。

ole_1.object.enableprotection=true

ole_1.object.selection="C4"//光标停在C4单元格处

CASE "gl"

 

CASE "zd"

 

CASE "zb"

 

END CHOOSE

  5.鼠标右键双击OLE_1控件可直接编辑报表,填入内容至可写的单元格内,可以采用F1的画图工具对报表进行简单的做图。

  6.将已修改的控件内容写入数据库:

int fh

OLEobject book;

string filename="c:/book1.vts"

 

book=ole_1.object

book.Write(filename, 12)//将控件内容写入临时文件

fh=fileopen( filename, StreamMode!)

IF fh<>-1 THEN

FileRead(fh, vcf_form) //将临时文件内容写入BLOB变量

FileClose(fh)

ELSE

RETURN 0

END IF

 

if len(vcf_form )>0 then

UPDATEBLOB DFS_TDSQP set SQPNR=:vcf_form

where LRSJ=:gd_lrsj and LRDW=:gs_lrdw

using sqlca;//将BLOB变量内容写入库中

IF SQLca.sqlcode=0 THEN

COMMIT using sqlca;

// MessageBox("提示", "完成对数据库的申请票存储操作!")

ELSE

ROLLBACK using sqlca;

MessageBox("提示", "申请票存储操作失败!")

RETURN 0

END IF

end if

 

gd_tdsj=datetime(date(left(em_1.text,4)+"-"+mid(em_1.text,7,2)+"-"+mid(em_1.text,11,2)),&

time(mid(em_1.text,15,5)+":00"))

update DFS_TDSQP set TDSJ=:gd_tdsj , ZTM=:ztm_wf

where LRSJ=:gd_lrsj and LRDW=:gs_lrdw

using sqlca;//保存录入时间和录入单位的值

IF SQLca.sqlcode=0 THEN

COMMIT using sqlca;

MessageBox("提示", "完成对数据库的存储操作!")

return 1

ELSE

ROLLBACK using sqlca;

MessageBox("提示", "停电时间存储操作失败!")

RETURN 0

END IF

  7、打印控件内容

  ole_1.object.fileprint(true)

  实际上,read、write、savefiledlg、fileprint等函数都是FORMULA ONE所有的,POWERBUILDER中只需在Ole_1后加一个object即可引用这些函数,函数的定义在F1的帮助中,请自己用时查阅。

  1.建一张申请票的F1文件作为模板,如下图:

  为实现权限控制,将I1:P38的单元格设上保护,使右半边报表不可写:

  1)、选中单元格,鼠标右键FORMAT CELLS:PROTECTION下的LOCKED前打勾。

  2)、FORMAT菜单下SHEET项的PROTECTION前打勾,这句很重要,否则上句不起作用。

  2.库中建一停电申请票表DFS_TDSQP:

  LRSJ 录入时间 TDSJ 停电时间

  LRDW 录入单位

  GLDW 管理单位

  TDSB 停电设备

  GZNR 工作内容

  KGSJ 开工时间

  WGSJ 完工时间

  GZR 工作人

  ZTM 状态码

  SQPNR 申请票内容  IMAGE类型

  3.在PB窗口中插入F1控件:

  在POWERBUILDER的窗口中点中OLE图标:会出现“插入对象”对话框,选择insert control 标签项(如下图),

  在对象列表中选择 Vci Formula One Workbook,按确定键后,选好插入位置点击鼠标,即加入了一个名为ole_1的OLE对象,在其上用鼠标右键选中OCX Properties项,在Show标签下可将Row Heading和Column Heading项取消选中,将Tabs的值由Bottom改为Off(如下图),加入的OLE对象就是一个没有行头、列头及标签的空白表格。

摘要 Formula One e.Spreadsheet Engine 具有广泛的API和丰富的GUI设计器,可用以访问多种数据源,过滤和格式化数据,并能动态生成并传送真实的Excel文件(不仅仅是格式化静态数据),并带有各种公式,图表,略图,合并单元格,多种工作表单以及许多其它的格式选项。 组件列表 技术特性 应用场景 制作基于Excel的各类报表,适合国内各领域涉及Excel格式的报表系统以及Web报表系统的开发。 运用优势 ·容易访问和格式化任何数据源数据 连接数据库,XML或文本文件,并利用电子表格通用性和功能来自动化格式,计算和分析数据。 ·传送真实的Excel文件报表 请不要只认为是打印静态数据或CSV文件到Excel中!动态生成真实的Excel文件,具有精确的列,行,公式,功能,图表,略图,合并单元格,多种电子表格,旋转文本,超级链接,完全格式化,等等。 ·处理服务器或客户端Excel文件的Java 工具 包括GUI-less服务器端电子表格引擎,用于嵌入servlets,JSP和EJB,并具有一个单独的与Excel兼容网格,用于Java 桌面GUIs上。 ·灵活的API 100%纯Java 强大的完全Java验证API提供给开发者较大的灵活性,并提供方便的访问数据,文本文件,XML和其它数据源,以及传送Excel,XML或HTML报表的方法。 ·流线式创建Excel报表,将现存的Excel文件作为模板文件 自动化并报告计算结果和现存商业逻辑,格式以及当前存放在Excel文件中的规则。 ·可视化设计报表,通过代码设计报表,或两者兼备 通过编程创建Excel报表,您以及您的用户可以使用强健的电子表格设计器,形象的创建报表模板。 开发环境 ";;;Borland(R) JBuilder[TM] 8 Borland(R) JBuilder[TM] 7 Borland(R) JBuilder[TM] 6 Borland(R) JBuilder[TM] 5 IBM VisualAge for Java 4 IBM VisualAge for Java 3 IBM VisualAge for Java 2 Borland(R) Visual Café 4.0 Borland(R) Visual Café 3.0 Borland(R) Visual Café 2.0 Sun Java Workshop Sun Forte V2.0 for Java Sun ONE Studio 4 (Formerly FORTE for Java) Sun ONE Studio 5 (Formerly FORTE Compiler Collection) NetBeans";;; 支持平台 ";;;Windows 95 Windows 98 Windows NT 4.0 Windows 2000 Windows XP UNIX Linux";;; 标准报价 82,720 元人民币 * 以上报价仅供参考,具体以厂商正式报价为准。 电话 021-58549800 Email: tools@sh.grapecity.com http://www.grapecity.com/china
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值