SQL查询编程之多字段篇!(相当好的一篇文章,一定要理解了)

http://203.208.39.132/search?q=cache:yB8FpiuCGugJ:www.cnblogs.com/bluekylin/archive/2005/12/12/295707.html+setsqlselect+%E5%A4%9A%E4%B8%AA%E5%AD%97%E6%AE%B5&cd=6&hl=zh-CN&ct=clnk&gl=cn&st_usg=ALhdy2_LcGTxqF83vhGOYtSPbzzu15IX6Q

 

 

今天PB考完试了,说真的学过VB再学PB真的没什么意思,真搞不懂学校为什么要开这门课。
可能就是别人说的用PB的DataWindow作数据库开发比较快,我没感觉,只对DataWindow作为注册商标有较深印象。
还好在今天考试时学到一点东西,应该适用于所有SQL编程,算是另类的技巧吧,随便记上一笔。
在考试之前我还不知道setsqlselect(sqlstr)中的sqlstr中如何放置sql语句中的变量。
考试题目是两个ddlb控件(下拉列表框ddlb_1,ddlb_2)和一个sle控件(单行输入框sle_1)中任选输入(可以不选,选一个输入,两个,或三个都输入)来查询。
我一看到这种查询就开始后悔,昨天为什么没有把setsqlselect搞清楚,只能硬着头皮用带参数的datawindow来实现这个功能。
一开始没什么思路,只是实现一个查询,话说"人不会倒霉一辈子",记得我昨天还被桔梗塞住牙缝难受了半天,今天运气来了,突然想到sql中like的"伟大"功能(现在只能说它伟大了,帮了我大忙),它可以实现参数的无效传递,可能无效传递说的不太恰当,反正就是这样的功能:



选了ddlb_1其他不做操作,则把其他两个参数变为'%'传给datawindow的形参,用like查询的话相当于只从数据库中检索了ddlb_1的数据
PB中向dw传参的代码为:
string str1,str2,str3
str1=ddlb_1.text
str2=ddlb_2.text
str3=sle_1.text
if str1="" then str1="%"
if str2="" then str2="%"
if str3="" then str3="%"
dw_1.retrieve(str1,str2,str3)

当然有做无用功,也是没办法中的办法了,谁叫我那个时候不知道setsqlselect怎么用,但考试要求都能实现了,应该过关了。
今天,考完试回来发现CSDN有人回答了我提出的关于setsqlselect(sqlstr)的问题,原来sqlstr中含变量的sql语句要这么写:
sqlstr="select * from user where name='"+ls_str+"'"
=后面的变量ls_str放置是我提的问题。

现在想想会用setsqlselect了,感觉SQL语句中还是应该使用like比较简单,不然还要判断哪个为空,挺麻烦的(8种组合呢),还是用like:
string str1,str2,str3
str1=ddlb_1.text
str2=ddlb_2.text
str3=sle_1.text
if str1="" then str1="%"
if str2="" then str2="%"
if str3="" then str3="%"
sqlstr="select * from table1 where id1 like '"+str1+"' and id2 like '"+"str2"+"' and id3 like '"+"str3"+"'"
dw_1.setsqlselect(sqlstr)
dw_1.retrieve()//现在不用传参了


最终的解决方案,多字段查询:在SQL语句中使用like。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值