100分求PB做的动态报表设计源码

ducklin825 2006-12-05 01:36:35
本人属初学pb的菜鸟,求pb做的动态报表设计的源码,哪位好心人有珍藏能否给发一下,不甚感激! 邮箱:ducklin825@163.com
...全文
294 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ducklin825 2006-12-11
  • 打赏
  • 举报
回复
谢谢各位古道心肠,我已收到了一个致用5.0的自定义报表,很是感谢!!
jdsnhan 2006-12-08
  • 打赏
  • 举报
回复
按lz所说,本人属初学pb的菜鸟,求pb做的动态报表设计的源码.
动态报表里面的东西好多,需要对dw各个属性,各个函数非常熟悉,所以建议lz还是先熟悉熟悉dw的用法吧,自己动手,在碰到问题的时候再来问问题。
lovelihp 2006-12-07
  • 打赏
  • 举报
回复
MARK
xowcbobo 2006-12-07
  • 打赏
  • 举报
回复
在通常的管理信息系统开发过程中,总是有没完没了的报表需要制作,调试报表花费的时间也是最多而且乏味,还常常不能满足客户的要求。如果能够让用户自己调整报表的格式和内容,然后将它保存下来,程序下次启动时若能自动调用保存了的报表格式那就方便多了。
实现原理
PowerBuilder中有一种以PSR为后缀的特殊的保存报表的文件格式(本文简称PSR文件),数据窗口可以直接读取PSR文件生成报表,而程序通过生成PSR文件,就可以实现动态报表格式的保存。
首先,通过设置数据窗口对象(dataobject)中的文本、列等的Resizeable和moveable属性为1来实现对象位置的拖动控制,通过数据窗口的Modify函数实现对象值的更改(包括增加和删除)。
其次要保存报表格式。在一个应用中,数据窗口对象的名称总是惟一的,将每一个数据窗口对象转化成PSR文件存于数据库表中。在窗口打开时,程序先校验报表格式是否存在。如果存在,将报表格式读出来放在一个临时文件当中,然后设置数据窗口(datawindow)的数据对象(dataobject)为这个报表文件,并提取数据; 如果不存在,直接提取数据即可。
实现过程
1. 建立一个数据库表用以保存报表格式文件,各个字段定义如下:
2. 建立一个窗口w_temp。 定义实例变量如下:
string is_dwtype,is_dwobject
//保存报表中对象的类型及名称
3. 在窗口的Open事件中加入如下代码, 校验报表格式是否存在,如果存在,读取定义好的报表格式到数据窗口。
blob emp_pic
long ll_handle
string ls_dwobject,ls_reportfile,ls_path
ls_dwobject = dw_print.dataobject
//判断是否存在该数据窗口的报表格式
select count(*) into:ll_count from dyn_report where dwobject =:ls_dwobject;
if ll_count>0 then
//读取报表格式文件到大文本变量
  selectblob memo into:emp_pic from dyn_report where dwobject =:ls_dwobject;
  //创建PSR临时文件并保存到硬盘
  ls_reportfile =‘\temp7089.psr’
  ll_handle = FileOpen(is_reportfile,StreamMode!,write!,LockWrite!,Replace!)
  FileWrite(ll_handle,emp_pic)
  FileClose(ll_handle)
  dw_print.dataobject = ls_reportfile
  dw_print.settransobject(sqlca)
else
  Dw_print.settransobject(sqlca)
End if
Dw_print.retrieve()
4. 保存报表格式,这可以通过Cb_savereport按钮的clicked事件实现。
string ls_filename
long ll_count
blob Emp_id_pic
ls_filename =“temp70201.psr”
//保存报表格式到硬盘临时文件
dw_print.saveas(ls_filename,PSReport! ,false)
sqlca.autocommit = true
select count(*) into :ll_count from dyn_report where dwobject =:is_dwobject;
if ll_count =0 then
  insert into dyn_report(dwobject,rptitle)
  values(:is_dwobject,:ls_filename,:ls_path);
end if
//从硬盘临时文件读取数据保存到数据库表中
emp_id_pic = of_readbmpfile(ls_filename)
//该函数将二进制文件内容读到大文本对象中
UPDATEBLOB dyn_report SET memo = :Emp_id_pic where dwobject = :is_dwobject;
//更新数据库
sqlca.autocommit = false
5. 动态报表的实现。通过数据窗口dw_print的clicked事件捕获数据窗口中的对象,并将对象名存放在实例变量is_dwobject中,为下一步修改报表做准备。
string ls_type,ls_dwoname
//得到对象类型和名称
ls_type = trim(upper(dwo.type))
ls_dwoname = trim(dwo.name)
is_dwtype = ls_type
choose case ls_type
 case “TEXT”,“CommandButton”,“GROUPBOX”
  is_dwobject = ls_dwoname
  //设置为可以拖动和改变大小
  this.modify(ls_dwoname+“.Resizeable=‘”+“1’”)
this.modify(ls_dwoname+“.moveable=”+“1”)
case “LINE”
//直线对象不能通过设置Resizeable和moveable属性进行调整,必须通过其他途径
is_dwobject = ls_dwoname
case “RECTANGLE”,“ELLIPSE”,“GRAPH”,“BITMAP”
  is_dwobject = ls_dwoname
  this.modify(ls_dwoname+“.Resizeable=‘”+“1’”)
  this.modify(ls_dwoname+“.moveable=‘”+“1’”)
case “COLUMN”,“COMPUTE”
  is_dwobject = ls_dwoname
  this.modify(ls_dwoname+“.Resizeable=‘”+“1’”)
  this.modify(ls_dwoname+“.moveable=‘”+“1’”)
end choose
最后再通过modify()函数就可以实现基本的动态报表操作,这一类的文章较多,PB中也有大量的例子可直接使用,在此不再赘述。
6. 在cb_exit按钮的clicked()事件中加入:close(parent)。
7. 在应用的open事件中加入: open(w_temp)。然后保存并运行,全部工作到此结束!
本程序在PB7.0、Oracle 8.05下调试通过。
youqiong 2006-12-05
  • 打赏
  • 举报
回复
up
li_d_s 2006-12-05
  • 打赏
  • 举报
回复
有个致用5。0的,要不要?
青锋-SS 2006-12-05
  • 打赏
  • 举报
回复
楼主不妨考虑一下动态创建数据窗口,与你的问题很类似.
青锋-SS 2006-12-05
  • 打赏
  • 举报
回复
以前做过,没成功,老是显示不正常.
源码直接下载地址: https://pan.quark.cn/s/387d7c8f6289 在使用IE浏览器的过程中,偶尔会出现重置为默认配置操作未能顺利完成的现象。这种情况的发生可能源于多种因素,包括注册表项出现偏差、浏览器附加组件之间存在不兼容、操作系统授权设置不当或受到恶意程序影响等。针对这一挑战,我们可以通过一系列系统性的方法来逐一诊断和纠正。首先需要验证当前用户是否具备管理员级别的操作权限。在执行重置配置的操作时,必须确保IE浏览器是以管理员身份启动的。具体操作方式为,使用鼠标右键单击IE程序图标,并从弹出的菜单中选择“以管理员身份运行”这一选项。其次,应当检查是否存在恶意软件。恶意程序有时会非法修改浏览器的配置信息,从而阻碍重置过程的正常进行。用户可以借助Windows系统自带的Microsoft Safety Scanner进行检测,或者选择安装并使用第三方安全防护软件执行全面的系统扫描。紧接着,需要对浏览器的缓存数据以及Cookies文件进行清理。在IE浏览器界面中,通过访问“工具”菜单并选择“Internet选项”,然后在弹出的设置界面中,切换至“常规”标签页,并执行清除浏览历史记录的操作,此过程应包含Cookies和临时互联网文件。倘若上述步骤均未能解决问题,那么可以考虑禁用或移除那些可能引发冲突的浏览器附加组件。相关操作需要在“工具”菜单下找到并打开“管理加载项”,对可疑的插件进行禁用处理,并在浏览器重新启动后再次尝试执行重置操作。再者,修复IE浏览器相关的注册表配置也是至关重要的环节。注册表编辑器是一个功能强大的系统工具,任何不当的操作都可能导致严重的系统问题,因此在进行修改前必须创建系统还原点作为安全备份。用户可以通过按下“Win+R”组合...
内容概要:本文详细介绍了光伏储能虚拟同步发电机(VSG)并网仿真模型的Simulink实现方法,系统研究了光伏发电与储能系统融合VSG技术并入电网的动态特性与控制策略。通过构建完整的VSG控制模块,模拟其在并网过程中的虚拟惯性响应、频率调节能力和有功无功功率支撑特性,验证了该系统在增强电网稳定性、提升新能源并网适应性方面的有效性。模型全面涵盖光伏出力特性、储能系统充放电管理、VSG有功-无功解耦控制、下垂控制机制以及并网点动态响应等关键环节,并通过多种工况下的仿真分析,评估系统在不同运行条件下的动态性能与鲁棒性。; 适合人群:具备电力系统、新能源发电、自动控制等相关专业背景,熟悉Matlab/Simulink仿真环境,从事新能源并网、微电网控制或电力电子系统研究的科研人员、工程技术人员及研究生。; 使用场景及目标:①深入理解光伏储能系统如何通过VSG技术模拟同步发电机的惯性和阻尼特性以支持电网稳定;②掌握虚拟惯量控制、下垂控制等VSG核心控制策略在Simulink中的建模、参数设计与实现方法;③为新型电力系统中新能源并网的动态仿真、稳定性分析及控制策略优化提供可靠的模型基础和技术参考。; 阅读建议:建议结合所提供的仿真模型进行逐步操作与参数调试,重点关注VSG控制环路的结构设计、控制器参数整定及其对系统动态性能的影响,同时可将该模型拓展应用于多机并联、微电网孤岛/并网切换、多能源协同控制等更复杂的系统场景中进行进阶研究。

401

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧