PB SetFilter() 函数用法及注意事项

函数作用:为DataWindow或者DataStore指定数据过滤规则。通常在调用该函数前使用函数Retrieve将数据检索到客户端,该函数可以决定检索到客户端的这些数据哪些可以显示,哪些不能显示。该函数对客户端的数据进行操作,和后台数据库没有任何关系。在设置完过滤规则后使用函数Retrieve检索数据是不合理的,每次设置过滤规则后都检索数据,这样的执行效率很低。需要注意的是,该函数紧紧是设置过滤规则,并不进行过滤。函数Filter是进行过滤的,使用最近设置好的过滤规则对数据进行过滤。
函数语法:integer dwcontrol.SetFilter ( string format )
ldwcontrol:要为其设定过滤规则的DataWindow、DataStore或者下拉子数据窗口控件的名称;
lformat:作为过滤规则的表达式,该表达式的返回值应该是Boolean类型,或者是True、或者是False。如果表达式返回值为Null,则在执行函数Filter时自动弹出对话框让用户指定过滤规则。在表达式中可以使用数据窗口对象函数、列名、列号、数字、字符串等。如果用到了列号,则应该以‘#’开头、后面紧跟数字来表示。多个条件可以使用逻辑运算符进行联结,一个非常良好的习惯是每个条件都应该使用括号。这样既可以保证表达式的清晰,又可以避免一些Bug。后面的代码实例中会讲到。
返 回值:数字类型,1表示执行成功,-1表示执行失败。该函数的返回值没有多大意义,很少在程序中使用该返回值。
代码实例:
例1:使用列名进行过滤。
string ls_filter

ls_filter = "cust_qty > 100 and cust_code >30"
dw_Employee.SetFilter(ls_filter)
dw_Employee.Filter( )
例2:必须使用括号的情况。下面的脚本在逻辑上看起来没有什么问题:
String ls_filter

ls_filter = “name like ‘张%’ and article_title like ‘%计算机%’”
dw_1.SetFilter()
dw_1.Filter()
实际上,上面的程序是不能正确执行的。将过滤规则作如下改动就可以了:
ls_filter = “(name like ‘张%’) and (article_title like ‘%计算机%’)”
例3:取消过滤规则。下面两个语句都能实现:
语句1:dw_1.SetFilter(“”)
语句2:dw_1.SetFilter(“1=1”)
例4:下面的语句在运行时可以让用户自己指定过滤规则:
String ls_null

SetNull(ls_null)
dw_1.SetFilter(ls_null)
dw_1.Filter()
例5:下面脚本可以判断数据窗口中是否有主键重复的数据。假设数据窗口中的主键是dept_id:
string ls_fieldname//主键名称
long ll_rc//数据窗口中总的数据行数

ls_fieldname = "dept_id"
dw_1.SetFilter("1=1")//取消过滤规则,显示全部的数据
dw_1.Filter()//过滤
ll_rc = dw_1.RowCount()//保存数据行数
dw_1.SetSort(ls_fieldname + " A")//用主键进行排序
dw_1.Sort()

//下面语句是核心语句。该过滤规则的含义是:只显示相邻行不同的数据。
dw_1.SetFilter(ls_fieldname + " <> " + ls_fieldname + "[-1] or GetRow() =1")
dw_1.Filter()
if dw_1.RowCount() < ll_rc then
MessageBox("提示",ls_fieldname + "列中存在重复的数据!",StopSign!)
end if

注:条件里的列名必须和数据窗口中的列名一致而不是和物理表列名一致,否则会提示表达式错误。

原文地址:https://www.cnblogs.com/Bokeyan/p/12108020.html

时间: 2024-10-11 16:55:19

PB SetFilter() 函数用法及注意事项的相关文章

memset函数用法及注意事项

头文件#include<cstring> ------------------------------------------ 在memset使用时要千万小心,在给char 以外 的数组赋值时,     只能初始化为0或者-1.    (看最后的0和1的补码)///////////      给bool类型数组可以初始化1------------------------------------------ 头文件#include<cstring>int arr[100];memse

fscanf函数用法及注意事项

/*FSCANF.C:This program writes formatted data to afile.It then uses fscanf to read the various databackfromthefile.*/ #include <stdio.h> FILE *stream; int main(void) { long l; float fp; char s[81]; char c; stream=fopen("fscanf.out","w

thinkphp中I(&quot;parm&quot;)用法的注意事项

php中用来传输的方式有两种$_GET 和 $_POST, thinkphp 提供了一种兼容两中传输方式的做法I(“param”) 但是请注意:在使用php中的函数时需要传入参数时不能用I(“parm”),必须使用采用的传输方式$_GET 或 $_POST传入,否则出错 thinkphp中I("parm")用法的注意事项,布布扣,bubuko.com

C++ sort函数用法

参考文档:http://hi.baidu.com/posinfo/item/dc3e73584c535cc9d2e10c27 C++ sort函数用法 FROM:http://hi.baidu.com/blackdemonfish/blog/item/e2c1d655d702a45ed0090652%2Ehtml 最近算法作业经常需要排序.偶是一个很懒的人,于是一直用C++的sort进行排序---不少同志对此心存疑虑,所以今天就写一写sort的用法.声明:此用法是从某大牛的程序中看到的,其实偶只

assert()函数用法总结

assert()函数用法总结 assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include <assert.h>void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行.请看下面的程序清单badptr.c: #include <stdio.h>

php中opendir函数用法实例

这篇文章主要介绍了php中opendir函数用法,以实例形式详细讲述了opendir函数打开目录的用法及相关的注意事项,具有一定的参考借鉴价值,需要的朋友可以参考下 本文实例分析了php中opendir函数用法.分享给大家供大家参考.具体如下: opendir语法:opendir(path,context) 目录,功能说明:打开目录句柄,opendir() 函数打开一个目录句柄,则该函数返回一个目录流,否则返回false.来看个opendir列出目录下所有文件实例,代码如下: $dirs ='.

assert()函数用法总结——转

assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include <assert.h>void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行.请看下面的程序清单badptr.c: #include <stdio.h>#include <a

oracle trim函数用法详解

在oracle数据库中,trim一般都是用在删除字符串两边的空格.实际上,trim也可以用来删除字符串两边的指定字符.并且trim指定删除的字符串只能是单个字符Oracle TRIM函数是很常见的函数,下面对Oracle TRIM函数的语法作了详尽的阐述说明,希望可以让您对Oracle TRIM函数有更深的认识. 如果提到Oracle TRIM函数,最简单的功能就是使用它来去除字符串的行首和行尾的空格,这个功能也是大家使用频率最高的一种.然而Oracle TRIM函数其实是具有删除“任意指定”字

Python3正则匹配re.split,re.finditer及re.findall函数用法详解

这篇文章主要介绍了Python3正则匹配re.split,re.finditer及re.findall函数用法,结合实例形式详细分析了正则匹配re.split,re.finditer及re.findall函数的概念.参数.用法及操作注意事项,需要的朋友可以参考下 本文实例讲述了Python3正则匹配re.split,re.finditer及re.findall函数用法.分享给大家供大家参考,具体如下: re.split re.finditer re.findall @(python3) 官方 r