注册 登录
编程论坛 VFP论坛

求助:添加了几个文本框后,查询结果出不来了

zhousr 发布于 2022-06-09 13:28, 1260 次点击
这是个志愿筛选系统,zsjh.dbf表中有专业名称zymc字段,通过在文本框中输入专业名称,如英语、化学等(zy1、zy2、zy3.....),从zsjh表中查询出符合条件的结果输出到jg.dbf表中。代码是:
select * from zsjh where (zy1&zymc or zy2&zymc or zy3&zymc...or zy10&zymc) into table jg
原来设置的可输入的专业一共是10个,几年运行下来都没问题。今年因为另外的原因,可输入的专业要增加到20个。查询代码也只是简单地增加了多出的几个条件:

select * from zsjh where (zy1&zymc or zy2&zymc ....or zy20&zymc) into table jg

如此简单的修改之后,jg.dbf没有生成,提示选择打开一个表。
百思不得其解,如此简单的修改后,怎么就会出现问题呢?可能是什么原因造成的,该怎么处理?

请不吝赐教!!
6 回复
#2
laowan0012022-06-09 13:31
句子太长了吧
原来是10个条件,试着加1个、2个、...加到某一个的时候估计就该出错了
#3
zhousr2022-06-09 13:40
谢谢版主!有道理,我一个个加试一下。
#4
mywisdom882022-06-09 14:10
*!*多条件拼接,text控件是数值,在text.init 中,写上 this.value = 0
zy1 = thisform.text1.value && 对应语文,
zy2 = thisform.text2.value && 对应数学
zy3 = thisform.text3.value && 对应英语
zy4 = thisform.text4.value && 对应化学
wh = ""
if !empty(zy1)
 wh = iif(empty(wh),"zy1 == 语文", wh + " or zy1 == 语文")
endif
if !empty(zy2)
 wh = iif(empty(wh),"zy2 == 数学", wh + " or zy2 == 数学")
endif
if !empty(zy3)
 wh = iif(empty(wh),"zy3 == 英语", wh + " or zy3 == 英语")
endif
if !empty(zy4)
 wh = iif(empty(wh),"zy4 == 化学", wh + " or zy4 == 化学")
endif
if !empty(wh)
 wh = "where " + wh
endif

text to s1 noshow
 select * from zsjh ;
 <<where>>;
 into table jg
endtext
messagebox(s1) && 观察一下,拼接内容
ExecScript(s1) && 执行语句

[此贴子已经被作者于2022-6-9 14:11编辑过]

#5
zhousr2022-06-09 14:21
谢谢mywisdom88版主!
本科、专科专业各有700多个,理论是都可能出现在考生的选项中,所以zy1、zy2....不能和专业对应起来
#6
zhousr2022-06-09 15:06
浪费大家时间了,非常对不起大家!zy1/zy2等是在另外地方定义的,添加的10个专业忘了声明了。
现在问题解决了!谢谢大家!!
#7
qq15518559882022-06-09 16:17
zy1&zymc 中间确定是&符号吗?

是否应该把要添加的专业zy1...做成一个DBF,然后 where zymc in (select zym from DBF),这样才一劳永逸
1