delphi程序中的SQL语句使用IN的写法,下面代码会报错

procedureTForm1.Button2Click(Sender:TObject);vartable:string;SNLIST:STRING;beginlabel... procedure TForm1.Button2Click(Sender: TObject);
var
table:string;
SNLIST:STRING;
begin
label2.Caption:='';
adoquery1.Close;
adoquery1.sql.Clear;
table:=edit2.Text;
adoquery1.SQL.Text:='select * from '+table+' where col_pd_serial in ('+memo1.Text+')';
ADOQuery1.Open;
label2.Caption:=inttostr(datasource1.DataSet.recordcount);
end;
还是会报错
展开
 我来答
glaciersoft
2012-07-16 · TA获得超过288个赞
知道小有建树答主
回答量:340
采纳率:0%
帮助的人:333万
展开全部
应该是数据类型的问题,你的in操作应该是操作字符类型了,所以应该是'select * from '+table+' where col_pd_serial in (‘’'+memo1.Text+‘’')';

你要注意组装后的SQL到底是个什么样的值,如果还搞不清楚这个SQL组装中单引号的使用,我建议你在Open之前,将Query的SQL显示出来,比如showmessage(ADOQuery1.SQL.Text),这样你就可以看到一个将要被执行的真正的SQL。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友68f34f7
2012-07-16
知道答主
回答量:74
采纳率:0%
帮助的人:39.7万
展开全部
报错有三种可能
1、table变量为空或不符合命名规范
2、memo1.Text内容为空或不符合语法规范
3、col_pd_serial 这个字段如果是字符串类型的,in里面的内容需要 '1','2','3' 这样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Beyond_Shan
2012-07-16 · TA获得超过1252个赞
知道小有建树答主
回答量:932
采纳率:40%
帮助的人:524万
展开全部
adoquery1.SQL.Text:='select * from '+table+' where col_pd_serial in ('+’‘’+memo1.Text+‘’‘+')';

memo1.text 要用引号引起来
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式