当前位置: 代码迷 >> PB >> PB源码:简略实现多种条件“组合查询”
  详细解决方案

PB源码:简略实现多种条件“组合查询”

热度:92   发布时间:2016-04-29 05:39:02.0
PB源码:简单实现多种条件“组合查询”

   

   此篇文章将带领大家实现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分钟前
最重要的是,把一件看似很难很难的任务通过一种简单的方式来实现。
  相关解决方案