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个变量就够了
<
本文探讨了如何在PowerBuilder中扩展datawindow控件的setfilter和find函数,以简化字段类型不同(如字符型、数值型、日期型)时的表达式编写。作者提出了使用问号作为变量占位符的灵感,类似于SQL动态游标的写法,旨在提高开发效率和降低错误率。
最低0.47元/天 解锁文章
265

被折叠的 条评论
为什么被折叠?



