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;
还是会报错 展开
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;
还是会报错 展开
3个回答
展开全部
应该是数据类型的问题,你的in操作应该是操作字符类型了,所以应该是'select * from '+table+' where col_pd_serial in (‘’'+memo1.Text+‘’')';
你要注意组装后的SQL到底是个什么样的值,如果还搞不清楚这个SQL组装中单引号的使用,我建议你在Open之前,将Query的SQL显示出来,比如showmessage(ADOQuery1.SQL.Text),这样你就可以看到一个将要被执行的真正的SQL。
你要注意组装后的SQL到底是个什么样的值,如果还搞不清楚这个SQL组装中单引号的使用,我建议你在Open之前,将Query的SQL显示出来,比如showmessage(ADOQuery1.SQL.Text),这样你就可以看到一个将要被执行的真正的SQL。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
报错有三种可能
1、table变量为空或不符合命名规范
2、memo1.Text内容为空或不符合语法规范
3、col_pd_serial 这个字段如果是字符串类型的,in里面的内容需要 '1','2','3' 这样的
1、table变量为空或不符合命名规范
2、memo1.Text内容为空或不符合语法规范
3、col_pd_serial 这个字段如果是字符串类型的,in里面的内容需要 '1','2','3' 这样的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
adoquery1.SQL.Text:='select * from '+table+' where col_pd_serial in ('+’‘’+memo1.Text+‘’‘+')';
memo1.text 要用引号引起来
memo1.text 要用引号引起来
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询