delphi 数据库查询中的SQL 语句 总是报错from 子语句错误,请大神们看看 哪里有问题?!

procedureTmainfrm.RzBitBtn4Click(Sender:TObject);varcx,cx1,cx2,cx3,cx4:string;begincx... procedure Tmainfrm.RzBitBtn4Click(Sender: TObject);
var
cx,cx1,cx2,cx3,cx4:string;
begin
cx1:='1=1';
cx2:='1=1';
cx3:='1=1';
cx4:='1=1';
if xmcheckbox.Checked then cx1:='engineer_name like ''%'+xmedit.text+'%'+'''';
if rccheckbox.Checked then cx2:='engineer_come between #'+datetostr(datetimepicker1.Date)+'# and #'+datetostr(datetimepicker2.Date)+'#';
if qycheckbox.Checked then cx3:='engineer_area like '''+'%'+qyedit.text+'%'+'''';
if fzrcheckbox.Checked then cx4:='engineer_leader like '''+'%'+fzredit.Text+'%'+'''';
cx:= 'select * from tb_engineer where'+cx1+'and'+cx2+'and'+cx3+'and'+cx4;
engineerquery.Close;
engineerquery.SQL.Clear;
engineerquery.SQL.Add(cx);
engineerquery.Open;
end;
展开
 我来答
syht2000
高粉答主

2012-07-20 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
很明显你的where、and与cx1、cx2之间都没有空格(也就是说上面的cx会变成类似于select * from tb_engineer whereengineer_name like..),会导致关键字全连在一起,sql当然就会出错,这种简单的问题你只需要在执行前showmessage一下cx就知道了,当然下断点也行。
追问
谢谢了 就是这个问题 showmess 好办法 可以加你好友吗?qq
hnzhoul
2012-07-20 · TA获得超过401个赞
知道小有建树答主
回答量:583
采纳率:0%
帮助的人:239万
展开全部
把你最后生成的SQL语句贴出来看一下。连接的时候有些地方应该要空格,你没有空格,还有字符串引号要注意一下。TSQL是用单引号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式