社区
DataWindow
帖子详情
无奈的多栏帐的打印!!!( 做过的朋友给点意见! ,小弟先谢了)
whoamiagain
2004-03-17 05:54:45
最近在解决以前遗留的问题时遇到多栏帐的打印,思索了好长时间,想了好几种方法,无奈还是无法解决,
那为做过多栏帐打印的朋友,给小弟点意见,有解决办法的话,不甚感激!
路过的朋友给点意见,小弟在这里谢过了!
凡是能提出意见的小弟均给分!!
...全文
46
4
打赏
收藏
无奈的多栏帐的打印!!!( 做过的朋友给点意见! ,小弟先谢了)
最近在解决以前遗留的问题时遇到多栏帐的打印,思索了好长时间,想了好几种方法,无奈还是无法解决, 那为做过多栏帐打印的朋友,给小弟点意见,有解决办法的话,不甚感激! 路过的朋友给点意见,小弟在这里谢过了! 凡是能提出意见的小弟均给分!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
whoamiagain
2004-03-18
打赏
举报
回复
因为多栏帐里的动态列是依据检索条件的不同而不同的,打印出来的效果是第一页可以有需要的列,而第二页却只有动态列,这样,一旦数据量多而且动态列的个数也多的情况下,打印出来的页数也很多,这样一旦页数混乱,很难将相应的数据对应上,而用户需要的是在那些只有动态列的页上加入需要的静态列,这样问题就又会很多,很多公司的软件在做到多栏帐的打印时都无法达到用户的要求,
通常出现的情况是:
当动态列的个数大于一页的显示时,用通用的打印控制模块,对数据窗口进行预览时会将超出的部分折回到下一页显示,然而它们的页数却在相同的page上,在折回的部分里只有动态列,这样打印出来的多栏帐,一旦顺序混乱,打印出来的那些折回的页的数据就无法与相应的页相对应,数据也很难对的上。
用户的要求是将相应的业务主键字段添加到那些折回的页上,这样那些折回显示的页可以与相应的页里的数据相对应,数据也能对的上。
我之前也想了好几种办法,例如做几个外部数据窗口将数据拷贝,或将数据导出在导入,都没有实现,关键是动态列的文本很难与数据对应上。
希望路过的朋友多给点意见,帮我顶!
这也是业界的难点,如果能解决的法,受益的是我们这些痛苦的“人”,呵呵
在这感谢那些回复的朋友们!
希望大家多提点想法,小弟不甚感激!!!!!!!!!!
zhangdatou
2004-03-17
打赏
举报
回复
1.引言
----自PowerBuild4.0问世以来,以其简洁高效的集成开发环境、强大的数据窗口技术、(几乎)无所不能的数据库访问能力,越来越受到编程人员的青睐。据Sybase自己
的统计, 目前全 球有60万 程序员 和系统 分析人 员在使 用他们 的Powerbuilder和S-designer,进行各种类型的应用程序开发。最新发布的PowerBuilder6.0族系列开发工具,直接支持ActiveX技术、ServerPush技术,对分布式计算模型的定义更加明确,实现更为简便,并可以利用数据窗口直接生成HTML格式
文件,等 等。所以,PowerBuilder 已成为C/S模式应用和基于InterNet 模式应 用的主 要开发 工具之 一。
----数据窗口(DataWindow)是PowerBuilder的专利,也是PowerBuilder应用程序的核心和精华所在.PowerBuilder通过丰富的属性和函数来控制数据窗口的显示和数据操纵,但对数据窗口的打印支持似乎过于简单,只有一个Print()
窗口函 数和一 个PrintDataWindowPowerScript函 数,并且 这两个 函数的 功能几 乎都是 一样,都 只简单 地将选 定数据 窗口原
样送入 打印队 列,本身 不具备 页面控 制功能。 为此很 多程序 员抱怨 这是PowerBuilder的一个缺陷,其实,PowerBuilder对打印功能的支持一样十分周到全面,只不过应用场合不同,需要用户自行加以选择。
----以下是对PowerBuilder打印控制功能的详尽分析,并介绍一个实用的数据窗口页面控制程序。
2.Powerbuilder实现动态页面控制的途径
----PowerBuilder数据窗口有一对函数Describe 和Modify,用于动态描述和修改数据窗口结构,与其它相关函数结合可以完成动态生成数据窗口、任意改变数据窗口显示方式、修改打印属性等。这两个函数是控制与修改数据窗口的核心函数,其使用方法如下:
----1)Describe获取数据窗口特定属性值
----语法:dwcontrol.Describe(propertylist)
----参数:dwcontrol数据窗口(或datastore)控 件名。
----propertylist用字符串表示的数据窗口属性。
----返回值:返回一个表示属性的字符串。
----数据窗口属性值也可以用dwcontrol.object.Datawindow.property来完成直接取得。
----2)Modify修改数据窗口特定属性
----语法:dwcontrol.Modify(modstring)
----参数:dwcontroldwcontrol数据窗口(或datastore)控 件名。
----modstring用字符串表示的数据窗口属性。
----返回值:如果函数执行成功返回“1”。
----与Describe类似, 修改数 据窗口 属性可 以用:
----dwcontrol.object.Datawindow.property=value直 接赋值。
----3)与打 印有关 的数据 窗口属 性
----数据窗口属性中与打印有关的有24个,其中实现打印页面控制的几个属性是:
----Copies:打印份数。
----Filename:如果不为空,表示输出到文件的文件名。
----Orientation:打印方向1=横向,2=纵 向
----Page.Range:输出页范围,要打印1,2,和5到10 页,输入: "1,2,5-10"。Page.RangeInclude:本
次打印范围,0=全部,1= 偶数页,2= 奇数页。Paper.Size:纸张大小。
----Scale:打 印比例。
----程序中利用Modify函数 设置好 这些属 性后,即 可实现 动态修 改数据 窗口的 目的,再
调用datawindow.print()函数,完成最后的打印输出。
一个通 用Datawindow打印控制程序
----将数据窗口中的报表在打印机上输出是PowerBuilder应用程序开发过程中必不可少的功能,作为例子,这里提供一个使用上述方法研制的通用打印控制窗口,用以替代Prompt属性
所提供 的Print窗口,实现汉化界面,并且可被自行修改扩充。为了书写简单,程序中采用直接赋值的方式修改属性。
实例 变量:
datawindowdw_print
stringprintername,name,port
窗口open 事件脚 本:
dw_print=Message.PowerObjectParm
printername=dw_print.Object.Datawindow.Printer
name=left(printername,pos(printername,"on")-1)
port=right(printername,len(printername)-pos(printername,"on")-1)
plb_printername.additem(name,1)
st_portname.text=port
“设置” 按钮clicked事件脚本
Integercode
Code=printSetup()
Ifcode=1then
printername=dw_print.Object.Datawindow.Printer
name=left(printername,pos(printername,"on")-1)
port=right(printername,len(printername)-pos(printername,"on")-1)
plb_printername.additem(name,1)
st_portname.text=port
endif
打印 范围组 中“全部” 选择钮clicked事件 脚本
dw_print.object.DataWindow.Print.Range=''
sle_1.enabled=false
sle_2.enabled=false
sle_3.enabled=false
“页数” 栏后sle_2单行文本编辑框Modified事件 脚本
dw_print.object.DataWindow.Print.Page.Range=sle_1.text
+"-"+sle_2.text
“自定 义”栏后sle_3单行文 本编辑 框Modified事件脚本
dw_print.object.DataWindow.Print.Page.Range=sle_3.text
打印 份数组 中份数 单行文 本编辑 框Modified事件脚本
dw_print.Object.DataWindow.Print.Copies=integer(this.text)
“全部” 选择钮Cliecked事件 脚本
dw_print.Object.DataWindow.Print.Page.Rangeinclude
=0
“奇数” 选择钮Cliecked事件 脚本
dw_print.Object.DataWindow.Print.Page.Rangeinclude
=1
“偶数” 选择钮Cliecked事件 脚本
dw_print.Object.DataWindow.Print.Page.Rangeinclude
=2
“确认” 命令按 钮Clicked事件脚本
longjob
ifIsValid(dw_print)then
job=PrintOpen()
PrintDataWindow(job,dw_print)
PrintClose(job)
close(parent)
endif
“取消” 命令按 钮Clicked事件脚本
close(parent)
----窗口调用方法:在其它带有数 据窗口的窗口中,使用OpenWithParm(w_print_set,dwname)
即可,其 中w_print_set为本窗口名,dwname为要 打印的数 据窗口。 该程序 是一个 通用打 印控制 程序,可 在任何 版本的PowerBuilder
应用中使用。
sloven
2004-03-17
打赏
举报
回复
帮你up一下
hundlom
2004-03-17
打赏
举报
回复
up
基于ssh,mysql的图书馆管理系统
比如借书,还书,索引,管理员删除书,添加书本,学生预约,都已经实现,差的就是界面是黑白的,没有做前端,因为
小弟
的前端水平不怎么,水平有限,欢迎下载,希望各位多多下载支持,批评指正,
小弟
在此谢过了!...
Android游戏源码大合集(主要是AndEngine和Libgdx的)
最近在网络上看到有网友抱怨...但能算游戏的,开源的,但凡有
点
价值的Android游戏源码,
小弟
也会陆续收集并发布出来(比如Replicaisland没用任何引擎,可代码有价值,所以这次也放进来了),更会在博客中一一给出。
尹成Python27天入门到项目实战
多线程实战多线程核心目标并发主线程与
小弟
线程多线程解决加速多线程的加速线程冲突基于类实现多线程基于类实现多线程的顺序与乱序互斥锁解决线程冲突死锁-使用锁要注意Rlock解决一个线程反复加锁单线程死锁创建...
继续群发Android游戏源码(再发15款)
话说开源游戏发布者,主要集中在欧美用户群,而欧美那边Java系又主要用这两个引擎,所以
小弟
暂时只能群发此二者开发的游戏。另外Android上SDL开发的游戏源码也意外的多,有空时
小弟
再集中发布下SDL的,不过,基本算...
arcgis
打印
地图,两种方式总有一款适合你的!!!
废话不多说,直接上图。 第一种方式: 我这个前端是vue框架,然后引入esri-...关于如何勾选区域
打印
,
小弟
还不知道如何实现,懂的大神,不吝赐教。 第二种方式: 这种方式就是利用html2canvas.js插件,进行屏幕的...
DataWindow
609
社区成员
20,469
社区内容
发帖
与我相关
我的任务
DataWindow
PowerBuilder DataWindow
复制链接
扫一扫
分享
社区描述
PowerBuilder DataWindow
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章