此篇文章将带领大家实现PB9.0中“组合查询”的功能。
还记得“机房收费系统”中,我们如何实现“组合查询”的吗?首先,带领大家回忆一些界面:
还记得当初写过的一篇博客《【机房收费系统知识小结点系列】之组合查询》同样是关于“组合查询”的,其中程序的精华之处在于“1”。
下面带领大家回忆一下代码的精华之处:
解析:默认值设置为“1”,使得sql语句的最终拼接,出现1=1 and 1=1的恒等效果。用”1”封装了所有的变化,最终只要写一个sql语句就可以实现”组合查询”的效果。否则,你可能就需要多重if ……else……嵌套,并且多种sql语句来实现效果了。
用上述”1”的思想,用于设计PB9.0组合查询。
首先来看一下界面(此处的界面已经做了精简):
分析:
1、总共有四种查询条件:用户名、真实姓名、登陆日期、退出日期。
2、其中每一种查询条件都分为两种情况:
(1)输入的查询条件,则按照输入的信息进行查询
(2)没有输入查询条件,则默认为:1
w_queryuserlog窗体的open()事件:
//数据窗口dw设置连接事务sqlcadw_queryuserlog.settransobject(sqlca)//让数据窗口控件从库中提取数据//dw_queryuserlog.retrieve()//得到原始语法,为检索做准备is_sql = dw_queryuserlog.getsqlselect()
cb_query事件:
//用于接受用户输入的数据string strusernostring strusernamestring strlogindatestring strlogoffdatestring Is_select//用户表示数据库中的字段string usernostring usernamestring logindatestring logoffdate//判断查询条件:用户名是否为空if trim(sle_userno.text)="" then userno="1" struserno="1"else userno="userno" struserno=trim(sle_userno.text) end if//判断查询条件:真实姓名是否为空if trim(sle_username.text)="" then username="1" strusername="1"else username="username" strusername=trim(sle_username.text) end if//判断查询条件:登陆日期是否为空if strlogindate="" then logindate="1" strlogindate="1"else logindate="logindate" strlogindate=em_logindate.textend if//判断查询条件:退出日期是否为空if strlogoffdate="" then strlogoffdate="1" logoffdate="1"else logoffdate="logoffdate" strlogoffdate=em_logoffdate.textend if//SQL语句,表示查询条件//Is_select=""Is_select=is_sql +" where "Is_select=Is_select+userno+"='"+struserno+"' and "Is_select=Is_select+username+"='"+strusername+"' and "Is_select=Is_select+logindate+"='"+strlogindate +"' and "Is_select=Is_select+logoffdate+"='"+strlogoffdate +"' "//检索数据dw_queryuserlog.setsqlselect(Is_select)//让数据窗口控件从库中提取数据dw_queryuserlog.retrieve()//统计显示记录的数目int countcount=dw_queryuserlog.rowcount()if count<>-1 then sle_count.text=string(count) else sle_count.text="0"end if
这样的好处就在于:
不需要对四中查询条件进行判断
不需要多重if……else……嵌套了
也不需要写多条sql语句了。
最重要的是,把一件看似很难很难的任务通过一种简单的方式来实现。在实现的过程中,你会有种似曾相识的感觉。慢慢的就会消除这种,由于“语言不通”而带来的陌生感,对代码产生恐惧。从而使你的心情放轻松,以便于更好地工作。
- 1楼lfmilaoshi10分钟前
- 最重要的是,把一件看似很难很难的任务通过一种简单的方式来实现。