标题:SELECT-SQL语句中的OR筛选条件怎样用才可达到预期目的?
只看楼主
yangbai
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:239
专家分:886
注 册:2006-9-21
得分:0 

虎哥你用的不是IIF函数来作为判断条件吧?也不知道是不是版本的缘故,反正做好了10多个属性都能实现正确的查询,再多添加一个条件系统都会提示SELECT-SQL语句过长而出现错误.


将每一件简单的事情做到极至便是成功!
2006-10-10 22:43
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
得分:0 
建议你先单独使用SELECT-SQL进行查询,结果放在一个表中(DBF表或临时表都行),然后再对新表进行处理。

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-10-10 22:44
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
得分:0 
cExpr=".T."
*对第一个文本框设定条件
IF !EMPTY(THISFORM.TEXT1.VALUE)
cExpr=cExpr+".AND.S_REC1="+ALLTRIM(THISFORM.TEXT1.VALUE)
ENDIF
*对第二,......第四十个文本框都依此进行处理,所不同的是下次写的时候红字部分都要改变而已
*最后进行查询,采用如下命令
SELECT * FROM 表 WHERE &cExpr

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-10-10 22:48
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
得分:0 
需要注意的是,上述查询是假设:字段S_REC1是数值型,TEXT1.VALUE是字符型

若字段S_REC1为数值型,而TEXT1.VALUE为数值型,则修改为
cExpr=cExpr+".AND.S_REC1="+ALLTRIM(STR(THISFORM.TEXT1.VALUE),16,4) &&16,4自己确定

若字段S_REC1为字符型,而TEXT1.VALUE为字符型,则修改为
cExpr=cExpr+".AND.S_REC1='"+ALLTRIM(THISFORM.TEXT1.VALUE)+"'"
或者
cExpr=cExpr+".AND.'"+ALLTRIM(THISFORM.TEXT1.VALUE)+"'$S_REC1"

其他情况你自己思考

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-10-10 22:57
yangbai
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:239
专家分:886
注 册:2006-9-21
得分:0 

非常感谢虎哥的耐心指导,多条件查询问题我终于解决了,终于也有了一点点成功的喜悦.不过在碰到数据表字段是逻辑值和表单中的复选框控件也是逻辑值时,我没能很好的用上述方法解决,我的方法是是用IIF()函数解决的:
比如IIF(THISFORM.yindian.VALUE=.T.,银点=THISFORM.yindian.VALUE,THISFORM.yindian.VALUE=.F.)
用这些IIF()函数在SELECT-SQL语句中与&cExpr条件相与而得到最终的查询!不知道虎哥对逻辑值字段是否有什么高招?请赐教.


将每一件简单的事情做到极至便是成功!
2006-10-14 18:09
fown
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:58
帖 子:1229
专家分:171
注 册:2005-5-26
得分:0 


添加条件里面的代码是
IF EMPTY(THISFORM.COMBo1.VALUE) OR EMPTY(THISFORM.COMBO2.VALUE) OR EMPTY(THISFORM.TEXT1.VALUE)
MESSAGEBOX("输入条件不能为空",16,"错误")
ELSE

IF EMPTY(thisform.edit1.value)
thisform.edit1.Value=" "+thisform.combo1.Value+thisform.combo2.Value+"'"+ALLTRIM(thisform.text1.Value)+"' "
else
thisform.edit1.Value=thisform.edit1.Value+" and "+thisform.combo1.Value+thisform.combo2.Value+"'"+ALLTRIM(thisform.text1.Value)+"'"
ENDIF
ENDIF
这是很久以前给一个朋友做的SIM卡里的查询代码,其中COMBO1里面是查询的条件,例如里面包括姓名,号码等,COMBO2里面是= < > LINK等,TEXT里面输入条件,然后再点添加条件即可,运行到今天没什么毛病,反正我朋友他们没发现什么毛病你可以参考一下,就上面几条命令就实现了多条件查询


有人说VFP不行了,我想说,你连VFP十分之一的功能都不会用,你怎么知道VFP不行?本人拒绝回答学生的问题我回答问题一般情况下只提供思路不提供代码,请理解
2006-10-15 19:27
fown
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:58
帖 子:1229
专家分:171
注 册:2005-5-26
得分:0 
忘记说明了,还要一个EDIT控件放查询条件,当然,你自己决定是否要在表单上显示,再有,还要有一个查询按钮,里面的代码是
LR=" "+ALLTRIM(thisform.edit1.Value)+" "

SELECT * FROM REPAIR(数据表名称) WHERE &LR(EDIT中的查询条件) INTO CURSOR crepair(临时表名) ORDER BY REPAIR.DATE

有人说VFP不行了,我想说,你连VFP十分之一的功能都不会用,你怎么知道VFP不行?本人拒绝回答学生的问题我回答问题一般情况下只提供思路不提供代码,请理解
2006-10-15 19:33
zengzhitao
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-2-10
得分:0 
有人能帮帮忙吗我想在做好的excel中填入vfp数据库数据,不是全部导入的比果按部门填入数据怎做啊
2007-02-10 18:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-94056-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.380172 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved