PB分组数据窗口内容选择打印.doc_第1页
PB分组数据窗口内容选择打印.doc_第2页
PB分组数据窗口内容选择打印.doc_第3页
PB分组数据窗口内容选择打印.doc_第4页
PB分组数据窗口内容选择打印.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

POWERBUILDER分组数据窗口内容的选择打印叶枫工作室HBSHIJIANGUO2012-9-8前言我所在的单位是一家县级医院,我主要的工作就是维护与开发单位正在使用的一套HIS。众所周知,现在医院HIS涉及的面相当广,几乎医院业务处理的各个环节都能管到,快相当于一个RP了。今天,我要探讨的问题是一个相当具体的应用护理站患者输液单打印。正文2011年医院护理部为提高护理工作的透明度,加强护理的管理与监督,要求开发打印患者输液单功能。程序开发完成交付使用一段时间后,病区护士长提出一个问题:患者输液单能不能选择打印,即每次选择打印一个患者。这个问题的提出,是有原因的。正常情况下,长期医嘱执行成功后,一次性将所有患者输液单打印出来是没有问题的。但由于护士对打印机不太了解,或者说根本不想去了解,导致打印机出现这样那样的小问题。例,装纸不到位,导致卡纸,前面就白打印了,重新再打。为了解决科室抱怨打印机性能不好,提高打印效率,节约纸张浪费,我对这一问题进行了深入的研究与分析。首先,轮流单是分组数据窗口,内容根据数据量动态变化,打印页数可多可少;最为重要的是PB的这种数据窗口能不能从中取得分组数据。其次,怎样取出数据?一般的数据复制技术如:rowscopy()不能满足这一要求。要想打印单人的输液单,必须把其所有相关数据全部取出,并且保证格式不变。针对上述要求,我采取了各种方法,也查阅了很多资料,但没有一个相当有效的手段。经过一段时间的探索,我偶尔发现了一个函数:GetObjectAtPointer(),这个函数不简单,它能取得HEADER区的对象及行号,这就为我获取数据窗口内容打下了基础。下面,详细介绍分组数据窗口内容的提取。下图1-1是原始的输液单,我要做的就是从数据窗口取得单个人的输液单。图1-1从图1-1可以看到,患者关键信息都在header区中,一但得到了病案号,我就可以取得所有数据。因为病案号是患者的唯一标识。我先阐述一下本文总的实现思路:取得病案号,根据病案号过滤获取的数据,只用需要的数据,再新建一数据窗口,格式与原始的完全相同,用于存放过滤得到的数据,最后输出这个数据窗口就完成了目标要求。有了这个思路,我想大家都会明白了,其实很简单。但就是这个简单的问题,煎熬了我很长时间。所以我才总结了一下,供大家参考。下面说明第一步,取得病案号。这个要求对header 及band有个基本了解。主要用到Describe(),GetObjectAtPointer()函数,Describe()用于获取对象名称描述,GetObjectAtPointer()用于得到包含列名及行号的字符串,通过对这两个函数返回值的处理,我就得到了列名,对应等号,通过GetItemString(row,zd)可以获得病案号。特别说明一下,为什么要用GetObjectAtPointer()得到行号呢?因为在header区取得的row为0。第二步,设置过滤条件,过滤数据到新的数据窗口。Dw.setFiler(expresion)Dw.Filter()Dw.retrieve(parameter

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论