标题:求给个思路!
只看楼主
dragonman19
Rank: 1
等 级:新手上路
帖 子:68
专家分:5
注 册:2014-2-20
结帖率:42.11%
 问题点数:0 回复次数:18 
求给个思路!
我开发了一个办公室用品查询系统,筛选项如下图:


  代码如下:
 SELECT * FROM ch WHERE zt<1 and;
zcname LIKE ("%"+ALLTRIM()+"%") AND;
  syzt LIKE ("%"+ALLTRIM()+"%") AND ;         
   glbm LIKE ("%"+ALLTRIM()+"%") AND ;
     syr LIKE ("%"+ALLTRIM()+"%");
                                           into dbf temp         
现在用户说,想同时筛选多项资产名称,我想做个LIST,但是筛选项的数目不确定,那SQL该如何写?
而且用户需要的是“或”的查循结果,就是,比如要查询资产名称为“电脑”和“办公桌”,查询出的表中应该有这二项。
搜索更多相关主题的帖子: thisform and 查询 思路 LIKE 
2021-11-11 14:50
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
cmb1 = ALLTRIM(
cmb2 = ALLTRIM(
cmb3 = ALLTRIM(
cmb4 = ALLTRIM(
cwh = ""
if !empty(cmb1)
   cwh = cwh + iif(!empty(cwh)," and syr LIKE ('%'+cmb1+'%')"," syr LIKE ('%'+cmb1+'%')")
endif
if !empty(cmb2)
   cwh = cwh + iif(!empty(cwh)," and zcname LIKE ('%'+cmb2+'%')"," zcname LIKE ('%'+cmb2+'%')")
endif

if !empty(cmb3)
   cwh = cwh + iif(!empty(cwh)," and syzt LIKE ('%'+cmb3+'%')"," syzt LIKE ('%'+cmb3+'%')")
endif
if !empty(cmb4)
   cwh = cwh + iif(!empty(cwh)," and glbm LIKE ('%'+cmb4+'%')"," glbm LIKE ('%'+cmb4+'%')")
endif
if !empty(cwh)
    SELECT * FROM ch WHERE zt<1 and (cwh) && 或者 SELECT * FROM ch WHERE zt<1 and &cwh
else
    SELECT * FROM ch WHERE zt<1
endif
*没测试,你自己测试一下


[此贴子已经被作者于2021-11-11 17:21编辑过]

2021-11-11 16:08
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:40
帖 子:749
专家分:2475
注 册:2011-5-8
得分:0 
回复 楼主 dragonman19
你自己已经给出思路了
list是选中的数据,依此生成4个单字段表。
tmp1-zcname
tmp2-####
……………………
select * from ch  into cursor chtmp where zcname in (select zcname from tmp1) or syzt in (select syzt from tmp2) ………………
具体看你的 list准备如何建立。它有很多建立方式以资产项目为例:
1、建立两个list,一侧是未选中的,一侧是选中的。
2、在List上方,加一个Text,录入模糊查找
3、保留你的combox,选择项目加入下方的List
你想用哪种?

[此贴子已经被作者于2021-11-12 07:09编辑过]


dBase有人接盘了。
2021-11-11 19:15
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
* 接上,还可以这样
cmb1 = ALLTRIM()
cmb2 = ALLTRIM()
cmb3 = ALLTRIM()
cmb4 = ALLTRIM()
cwh = ""
if !empty(cmb1)
   cwh = cwh + iif(!empty(cwh)," and syr LIKE ('%'+cmb1+'%')"," syr LIKE ('%'+cmb1+'%')")
endif
if !empty(cmb2)
   cwh = cwh + iif(!empty(cwh)," and zcname LIKE ('%'+cmb2+'%')"," zcname LIKE ('%'+cmb2+'%')")
endif

if !empty(cmb3)
   cwh = cwh + iif(!empty(cwh)," and syzt LIKE ('%'+cmb3+'%')"," syzt LIKE ('%'+cmb3+'%')")
endif
if !empty(cmb4)
   cwh = cwh + iif(!empty(cwh)," and glbm LIKE ('%'+cmb4+'%')"," glbm LIKE ('%'+cmb4+'%')")
endif
if !empty(cwh)
 text to str1 textmerge noshow pretext 4
 SELECT * FROM ch WHERE zt<1 and ;
 <<cwh>> ;
 order by ... ;
 into ... ;
 endtext
 else
 text to str1 textmerge noshow pretext 4
  SELECT * FROM ch WHERE zt<1 ;
  order by ... ;
  into ... ;
 endtext
endif
execscript(str1) && 执行多行VFP命名


[此贴子已经被作者于2021-11-11 20:29编辑过]

2021-11-11 20:27
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
我理解楼主的意思是某个选项需要有多个可选内容,如:资产名称为“电脑”或“办公桌”,单独对各个LIST做加工可能还不能满足需求
如果我理解的对的话,应该由用户进行多次选择,记录下每次的选择内容,并且指定联结关系,如:或、并且、不等于,然后再组合出查询语句

[此贴子已经被作者于2021-11-12 08:26编辑过]

2021-11-12 08:07
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
金蝶就有这个,自定义查询
根据条件,查询,但也是利用3,4楼的方法,先拼接查询语句,然后再运行execscript(),但这个拼接会复杂一些。
2021-11-12 08:45
wcx_cc
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:352
专家分:1152
注 册:2015-10-2
得分:0 
楼主的问题,单纯用 combo,或 list,直接查询恐怕难完成,因为1次只能选取1个值.这些值必须要汇集,构成多值的查询条件才能一次性查询.如果我做的话,
可能考虑使用 grid 打勾.
2021-11-15 02:52
dragonman19
Rank: 1
等 级:新手上路
帖 子:68
专家分:5
注 册:2014-2-20
得分:0 
感谢楼上各位指点
2021-11-16 13:48
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:40
帖 子:749
专家分:2475
注 册:2011-5-8
得分:0 

根据个人习惯,用列表框或表格都可以。如果是单纯的选择,我更习惯用列表框。这是我做的一个报名系统,由于右边的数据不全来自库,所以用了表格;如果参赛学校都来自库表中,用列表框代码更简单。

dBase有人接盘了。
2021-11-16 17:01
chansnsn
Rank: 2
等 级:论坛游民
帖 子:10
专家分:15
注 册:2013-6-27
得分:0 
我一般用一个过滤表单来选择过滤条件
2021-11-28 10:07



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




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

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