Delphi 如何实现多条件查询,求高手指教下 我这段程序对不对

procedureTstudentcheck.Button1Click(Sender:TObject);beginADOQuery1.SQL.Clear;ifcheckb... procedure Tstudentcheck.Button1Click(Sender: TObject);
begin

ADOQuery1.SQL.Clear;
if checkbox1.Checked then

ADOquery1.SQL.Add('select * from question where LessonName='''+combobox5.text+'''');

if checkbox2.Checked then
ADOquery1.SQL.Add(' and LessonUnit='''+combobox1.text+'''');
if checkbox3.Checked then
ADOquery1.SQL.Add(' and LessonDiff='''+combobox2.text+'''');
if checkbox4.Checked then
ADOquery1.SQL.Add(' and LessonScore='''+combobox3.text+'''');
if checkbox5.Checked then
ADOquery1.SQL.Add(' and Style='''+combobox4.text+'''');
ADOquery1.Open;

end;

我是设置了个复选框 当选一个时 搜索某个条件 比如有3个条件 可以1个条件查询,也可以同时满足两个条件查询

这是提示出的错误信息
Project Project1.exe raised exception class EOleException with message
'无效的SQL语句;期待‘DELETE'、’INSERT'、‘PROCEDURE'、SELECT'、或者ASP。Process
stopped.Use step or Run to contiune.
展开
 我来答
bdQuaker
2011-05-12 · TA获得超过253个赞
知道小有建树答主
回答量:551
采纳率:100%
帮助的人:442万
展开全部
你自己跟踪一下,
把 ADOquery1.Open; 语句设置中断,
在Run菜单中,
Add Watch...中,
加入“ADOQuery1.SQL.STRING”,
然后把它运行值,拷贝到记事本中,仔细考察一下。

你的第一个复选框,务必总是选定。
追问
我也觉得我的第一个复选框有问题,但我自己不明白为什么,因为每次如果选择第一个复选框运行时总会提示该combobox没有设置默认值,不懂,愁啊
追答
哈哈...
因为你第一个复选框是差选的主体select,而不仅仅是where子句。
if checkbox1.Checked then
ADOquery1.SQL.Add('select * from question where LessonName='''+combobox5.text+'''');
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
conan415
2011-05-12 · TA获得超过138个赞
知道小有建树答主
回答量:146
采纳率:0%
帮助的人:208万
展开全部
你checkbox1一定是checked的吗?如果没有就会发生这个错误。要不然你可以把第一句改成固定的。还有你可以把你的sql显示出来看看对不对
追问
我不一定是checked 因为本身想直接通过combobox实现多条件查询(PS就是满足任意几个条件就可以查询),因为那个实现不起来,所以想到用checkbox  每个checkbox对应下面一个combobox,如果某个checkbox被选中则使用该条件查询,本身也搜索到一个别人做的系统,程序也是这么写的,唯一区别就是别人用的是edit不是combobox,我觉得这应该没有大关系,但现在就是会提示该错误,不知道为什么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
邦浅魔千
2011-05-13 · TA获得超过220个赞
知道小有建树答主
回答量:209
采纳率:0%
帮助的人:356万
展开全部
procedure Tstudentcheck.Button1Click(Sender: TObject);
begin

ADOQuery1.SQL.Clear;
ADOquery1.SQL.Add('select * from question where 1=1');
if checkbox1.Checked then

ADOquery1.SQL.Add(' and LessonName='''+combobox5.text+'''');

if checkbox2.Checked then
ADOquery1.SQL.Add(' and LessonUnit='''+combobox1.text+'''');
if checkbox3.Checked then
ADOquery1.SQL.Add(' and LessonDiff='''+combobox2.text+'''');
if checkbox4.Checked then
ADOquery1.SQL.Add(' and LessonScore='''+combobox3.text+'''');
if checkbox5.Checked then
ADOquery1.SQL.Add(' and Style='''+combobox4.text+'''');
ADOquery1.Open;

end;
更多追问追答
追问
ADOquery1.SQL.Add('select * from question where 1=1');
这句是什么意思 什么叫where 1=1
追答
意思就是任何条件都成立,相当于没有where
但是可以和以后的条件连起来,这样不会使以后的条件有语法错误
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式