数据窗口逐层过滤的实现

转载 2015年07月10日 10:14:37


数据窗口逐层过滤的实现

分类: PB开发技术 1063人阅读 评论(0) 收藏 举报

       信息系统开发过程中你可能会收到这样的用户要求,“允许我在当前可见结果集中根据定义的条件过滤数据,与GOOLGE或百度的在结果中搜索功能类似”。

       PB虽然未直接提供该项功能,但实现起来也是非常简单。通常有两种方法:一、使用find函数直接将不符合条件的数据移到过滤区,二、将当前过滤区数据移走,然后使用setfilter函数过滤,再将移走的数据移回过滤区。方法一相对而言性能要差些,因为它要经历循环查找。在此笔者介绍第二种方法,你可以将of_filterinresult函数保存在你的数据窗口或数据存储祖先中。

附:of_filterinresult函数源代码。

/*******************************************************************

函数名称:of_filterinresult()

参数:     as_filterexpr string 过滤条件

返回值:  integer 是否成功(1表示成功,-1表示失败)

功能描述:在结果集中过滤

创建人:  康剑民

创建日期:2009-02-19

版本号:  V1.0

*******************************************************************/

long ll_filtered_count

integer li_return

 

ll_filtered_count = this.filteredcount()

//将过滤缓冲区数据移动到删除缓冲区

if ll_filtered_count > 0 then

       this.rowsmove(1,ll_filtered_count,filter!,this,this.deletedcount()+1,delete!)

end if

//执行过滤

li_return = this.setfilter(as_filterexpr)

this.filter()

//将删除缓冲区中本属于过滤缓冲区的数据移回到过滤缓冲区

if ll_filtered_count > 0 then

       this.rowsmove(this.deletedcount() - ll_filtered_count + 1,this.deletedcount(),delete!,this,1,filter!)

end if

 

return li_return

 

附:of_filterinresult函数说明。

of_filterinresult函数

        :   新建

    法:  integer dwname.of_filterinresult(as_filterexpr)

        能:  在结果集中过滤

    访问等级:  public

        数:  string as_filterexpr过滤条件

    返 回 值:  integer1表示成功,-1表示失败。

使用方法:  程序需要处调用,如在执行逐层过滤的按钮clicked事件。

    使用举例: 

1 下面的例子出自cb_filterinresult.clicked事件,sle_filterexpr为输入过滤条件的单行编辑框:

Dw_1.of_filterinresult(sle_filterexpr.text)

        考: 

 

作者:康剑民  kangjianmin@139.com

写作日期:2009-02-19

版权声明:本文为博主原创文章,未经博主允许不得转载。

PowerBuilder数据窗口实现单选与多选

1、实现多项选择:IF KeyDown(KeyControl!) THEN //按住ctrl键选择实现多选 IF THIS.GetSelectedRow(row - 1) = row THEN  TH...
  • caok
  • caok
  • 2009年03月31日 18:13
  • 2103

数据窗口逐层过滤的实现

   信息系统开发过程中你可能会收到这样的用户要求,“允许我在当前可见结果集中根据定义的条件过滤数据,与GOOLGE或百度的在结果中搜索功能类似”。       PB虽然未直接提供该项功能,但实现起来...
  • localmaple
  • localmaple
  • 2009年08月07日 14:31
  • 528

从顶部开始逐层打印二叉树结点数据

#include #include using namespace std; struct TNode { int elemen...
  • guotong1988
  • guotong1988
  • 2012年12月26日 15:15
  • 1221

从顶层开始逐层打印二叉树节点数据

从顶层开始逐层打印二叉树节点数据                10               /   \            6       14          /  \      ...
  • dahai_881222
  • dahai_881222
  • 2012年08月01日 13:01
  • 963

深度学习: greedy layer-wise pre-training (逐层贪婪预训练)

从UFLDL栈式自编码器摘来的话:每次只训练网络中的一层,即我们首先训练一个只含一个隐藏层的网络,仅当这层网络训练结束之后才开始训练一个有两个隐藏层的网络,以此类推。在每一步中,我们把已经训练好的前k...
  • JNingWei
  • JNingWei
  • 2017年12月18日 20:28
  • 548

pb中子数据窗口设置模糊查询

//在数据窗口中editchanged() string strdatacol, strfilter, strdisplaycol,strpym datawindowchild obj_dwc...
  • windsna
  • windsna
  • 2013年05月14日 17:12
  • 577

二叉树 逐层遍历

题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 解决思路: 二叉树见下图,我们要打印的顺序是:1,2,3,4,5,6,7,8,9,10;可以看到我们先要打印根节点,之后打印第...
  • u013276277
  • u013276277
  • 2017年06月02日 09:30
  • 395

微软等数据结构+算法面试100题(4)--怎样从顶部开始逐层打印二叉树结点数据?请编程

怎样从顶部开始逐层打印二叉树结点数据?请编程 void LevelOrderTraverse(TreeNode* root) { if(root==NULL) return; que...
  • xijiaoda_liuhao
  • xijiaoda_liuhao
  • 2012年11月09日 21:06
  • 847

二叉树遍历:递归+非递归+逐层遍历

二叉树数据结构定义,递归遍历方法、如何消除递归 以及 按照层次逐层遍历......
  • whucyl
  • whucyl
  • 2013年12月03日 18:46
  • 2497

怎样从顶部开始逐层打印二叉树结点数据?蛋疼解法

// printBTTree.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include using na...
  • liziyun537
  • liziyun537
  • 2011年09月06日 15:41
  • 852
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据窗口逐层过滤的实现
举报原因:
原因补充:

(最多只允许输入30个字)