`
JAVA海洋
  • 浏览: 601613 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

PowerBuilder数据窗口编程技巧十则

阅读更多
PowerBuilder取得巨大成就的原因就是有Datawindow对象,DataWindow是具有功能强大和灵活多变的特点,本人用PowerBuilder开发过一段时间后,,总结出一些技巧,以供广大的PB开发者借鉴使用。

  一.如何创建一个报表,如下形式
Quantity Running Total
5,000 5,000
2,500 7,500
3,000 10,500
12,000 22,500
  对于Running Total列,我们可使用计算列:CumulativeSum(Quantity for all),即可达到逐渐递增求和的功能。

  二.数据窗口的数据送缓冲区之前确认的四个步骤 判断数据类型是否正确。如不正确则触发ItemError事件。判断数据是否符合有效性规则。如不符合有效性规则,同样触发ItemError事件。 判断是否有数据被改动。判断数据是否通过ItemChanged事件,如果数据和ItemChanged相斥,将触发ItemError事件。

  三.如何在DataWindow中用数据类型为Datetime的列为条件进行查找
  1.当要查找的日期条件是一常数时使用如下表达式:
   ls_Find = "datetime_col
    = DateTime ('1/1/1999')"
  2.当要查找的日期条件是一个变量时使用如下的表达式:
   ls_Find = "datetime_col = DateTime ('" + ls_Date + "')"
  3.当要查找的日期条件是一个DateTime数据类型时使用如下表达式:
   ls_Find = "datetime_col = DateTime ('" + String (ldt_DateTime) + "')"

  四.设置数据窗口Boolean型属性的三种方法
  PowerBuilder提供了三种方法设置数据窗口的布尔型属性,分别是True/False, 1/0, 'Yes'/'No'。例如:
dw_1.Object.address.Visible = 0 dw_1.Object.address.Visible = False dw_1.Object.address.Visible = 'No'
  PowerBuilder在处理上以字符串的形式保存属性,而不考虑属性值是布尔型、长整型或是字符型。
为了进一步理解,可以导出一个数据窗口并查看它的原码,可以发现即使是列的颜色属性它也是使用带双引
号的数字来表达。

  五.如何在DataWindow中快速删除多行
  在开发过程中可能经常有要进行多行删除的操作,一般都使用循环语句进行操作:

FOR ll_RowOn = 1 TO dw_1.RowCount() dw_1.DeleteRow(ll_RowOn) NEXT

  一个快速的删除方法是把要删除的行从主缓冲区中移到删除缓冲区中。例如,删除缓冲区中所有的行:

dw_1.RowsMove(dw_1, 1, dw_1.RowCount, Primary!, dw_1, 1, Delete!)

  不过不要忘了过滤的行在不同的缓冲区中。

  六.如何在DataWindow的SQL语法中不使用SELECT DISTINCT实现删除重复的行
  起先对你要显示唯一值的列进行排序:"city A",然后增加如下过滤字符串:" city < > city [-1] or GetRow () = 1"

  七.如何在分组形式的DataWindow中分别显示各组的行号
  当我们为Datawindow的每一行显示行号时,可以简单的放一个表达式为GetRow()计算列。但是对于分组的Datawindow,要分别显示各组的行号,则应使用表达式为
GetRow() - First(GetRow() for Group 1) + 1的计算列。

  八.如何改变列的字体颜色,提醒用户此列已做修改
  在列的Color属性中,输入如下表达式

IF (column_name < >column_name.Original, RGB(255, 0, 0), RGB(0, 0, 0))。

  在这个条件中,如果此列已改变,则显示红色字体,否则显示黑色字体。这个表达式主要用column_name < > column_name.Original比较当前列的值和原始列的值是否相同来达到判断的目的。

  九.在数据窗口中移走行,但不是去做过滤或删除操作
  RowsDiscard()函数可做到这一点,它在数据窗口中执行移除工作,但被移走的行它不可被删除或做任何修改性的保存。

  十.如何在多行显示的DataWindow 中的Footer Band中显示当前数据的首行和最后行的行号
  我们先看两个计算列的表达式: IF (GetRow() = First(GetRow() FOR Page), 1, 0) // 1 为当前页的第一行

IF (GetRow() < > 1 AND GetRow() = Last(GetRow() FOR Page), 1, 0) // 1 为当前页的最后一行

  由上面可知,在Footer Band中设置如下计算列表达式:

'Rows ' + String(First(GetRow() FOR Page)) + ' to ' + String(Last(GetRow() FOR Page)) + ' are displayed'。

即可达到这项功能。
分享到:
评论

相关推荐

    PowerBuilder数据窗口编程技巧

    PowerBuilder数据窗口编程技巧 较多教程

    PB 编程技巧100例(CHM)

    Datawindow (17)PowerBuilder数据窗口编程技巧十则 蔡伟龙 System (16)如何在POWER BUILDER中使用WINSOCK控件 达伟春 OTHER (15)在PB打印中实现人民币大写 侯晓伟 MENU (14)用PB做一个通用右键菜单 田...

    powerbuilder案例开发集锦(源码光盘)1

    报表打印 案例1 报表打印预览 案例2 报表的打印 案例3 数据窗口的预览和打印实现 案例4 使用混合编程实现打印控制 案例5 使用PowerPrinter动态链接库实现打印扩展 案例6 数据窗口的打印 ...

    powerbuilder9.0教学视频下载地址

    用多媒体学PB9.0下载地址 1、多动手。自己多编写程序,多实践。这是初学者最应该提倡的。  2、勤查阅。查阅联机资料,包括联机帮助、PB自带的例子程序。...数据窗口是PB的核心,掌握数据窗口是学习PB必须要做到的。

    powerbuilder9.0

    用多媒体学PB9.0下载地址 1、多动手。自己多编写程序,多实践。这是初学者最应该提倡的。  2、勤查阅。查阅联机资料,包括联机帮助、PB自带的例子程序。...数据窗口是PB的核心,掌握数据窗口是学习PB必须要做到的。

    PowerBuilder 常见问题解答 chm 教程合集.rar

    PowerBuilder 常用问题解答 chm 教程合集  时也?运也?命也?...这些经验技巧涉及PB应用对象、数据库、SQL语言、窗口对象、数据窗口对象及控件、OLE应用等,还有一些关于Windows系统控制的部分内容。

    北京中科信软PowerBuilder培训01基础

    1. PB开发环境 ...20. 数据窗口设计技巧 21. 数据处理估计时间 22. 高级控件课程总结: 23. 用户对象的使用 24. 分布式应用 25. 游标的使用 26. 源代码的维护 27. 制作和使用帮助 28. PB仓库表的用途

    数据库开发SQL Server7.0 和Power Bulider7.0(一)

    内容包括:数据库管理与操作,创建和设置应用程序对象、窗口对象、数据窗口的对象,数据控制和PowerScript编程,创建和使用用户对象和事件,生成应用程序等。 书中通过大量实例讲述了SQL Server 7.0和PowerBuilder ...

    PB PFC参考教程 chm 版.rar

    实用的PowerBuilder PFC参考手册,可以非常方便的使用 MicrosoftWindows 应用程序,叙述了PowerBuilder当件最流行的编程方法,和"Application Techniques book"一书中叙述的概念和编程技巧以及如何理解SQL和如何使用...

    PB进阶代码(很全的)

    《PowerBuilder 9.0进阶开发篇》(实例与技巧篇)配书光盘使用说明 本光盘内容为本书所有实例的源代码。如下: 第1章 窗口、控件与界面 1.1 类Outlook工具栏界面实现 -- Outlook 1.2 制作Splash窗口 -- Splash ...

    pb编程各种小技巧脚本

    我们在PowerBuilder应用程序的开发过程中, 使用DataWindow时, 经常会遇 到某列的数据太长, 不能同时全部显示的情况. 若采用自动水平滚动, 操作起 来又不够简便. 下面介绍一种方法, 实现列数据多行显示, 即实现列...

    Lotus Domino WEB详细 学习笔记

    32. 用PowerBuilder访问Lotus Notes数据库 55 33. 如何在表单中加入计数器 58 34. 实现两个数据库间的数据追加 C/S 结构 60 35. 如何防止他人使用旧id和旧口令访问Domino服务器? 61 36. 在你的WEB站点...

Global site tag (gtag.js) - Google Analytics