三、基于配置的datawindow控件,轻松完成校验功能(扩展filter和find函数)

本文探讨了如何在PowerBuilder中扩展datawindow控件的setfilter和find函数,以简化字段类型不同(如字符型、数值型、日期型)时的表达式编写。作者提出了使用问号作为变量占位符的灵感,类似于SQL动态游标的写法,旨在提高开发效率和降低错误率。

PowerBuilder开发人员,datawindow的setfilter和find函数的表达式写法是一样的,变量要开发人员串到表达式中,但是表达式特容易写错。字符型字段、数值型字段、日期型字段的写法都不一样。

看一下setfilter和find函数表达式的范例"age > 24 and brxm = '欧阳严严'",如果表达式中的“24”和“孙”是变量的话,又要连接字符串"age > "+string(li_age)+" and brxm = '"+ls_username+"'"。用起来其实很不舒服,有没有什么简便一点的方法可以实现呢?

 

扩展filter和find函数想法的由来

我很喜欢PB里的动态游标的写法,SQL里的变量用问号来表示,using值直接用变量。

int li_age
string ls_username, ls_dm
li_age = 24
ls_username = '孙木贞'
ls_sql = "SELECT dm FROM xtgl_ddlbn WHERE age >= ? and username = ?"
Declare cur_ddlb Dynamic Cursor For SQLSA ;
Prepare SQLSA From :ls_sql ;
Open Dynamic cur_ddlb Using :li_age, :ls_username;
Do While True
	Fetch cur_ddlb Into :ls_dm;
	If sqlca.SQLCode <> 0 Then Exit
	
Loop
Close cur_ddlb ;

如果setfilter 和 find的表达式也能这么书写的话,岂不是很容易?例如

uf_filter('"age > ? and username = ?', li_age, ls_username)

但是表达式后面要支持多少个变量呢?我觉的,4个、5个变量就够了

<
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值