我的那一段如下:
var
temp1:string;
begin
adoquery2.Close;
adoquery2.SQL.clear;
adoquery2.SQL.Add('select * from car');
adoquery2.SQL.Add('where 车牌 in (:1)');
adoquery2.Parameters.ParamByName('1').Value:=temp1;
adoquery2.Open;
end;temp1为字符串,如果赋一个值的话可以返回结果!!!(如:京A-51896)
但如果多个值运行没有反应!也不报错!!(如:京A-51896,京B-64235)我是新手!请大虾们多多关照!!!!谢谢
var
temp1:string;
begin
adoquery2.Close;
adoquery2.SQL.clear;
adoquery2.SQL.Add('select * from car');
adoquery2.SQL.Add('where 车牌 in (:1)');
adoquery2.Parameters.ParamByName('1').Value:=temp1;
adoquery2.Open;
end;temp1为字符串,如果赋一个值的话可以返回结果!!!(如:京A-51896)
但如果多个值运行没有反应!也不报错!!(如:京A-51896,京B-64235)我是新手!请大虾们多多关照!!!!谢谢
参数value的类型是Variant类型 这表示的是一个为预制类型。当他进行赋值之后会确定其类型。
这里我不建议使用参数。你可以直接使用 adoquery2.SQL.Add('where 车牌 in ('+Temp+')');
如果车牌是字符型的则temp的写法很特别为:temp:='''京A-51896''',''京B-64235'',''...'''
var
temp1:string;
begin
adoquery2.Close;
adoquery2.SQL.clear;
ADoQuery2.sql.text:='Select * from car where 车牌='+''''+temp1+'''';
adoquery2.Open;
end; 我都是这样写的
adoquery2.SQL.Add('where 车牌 in (:1)');
adoquery2.Parameters.ParamByName('1').Value:=temp1;没明白你要做什么
temp1要是赋一个值的话,如:京A-51896,就是单条件查询了,当然会有结果
要是赋多个值,那么temp1中的值就变为:如:京A-51896,京B-64235
其中 (京A-51896,京B-64235)是一个值,又不是多个值
你这种做法又不是多条件查询怎么会有结果呢?
,'京B-64235');
用参数实现查询‘京A-51896,京B-64235’怎么实现??
此时怎么用??
Temp:string;Temp:='''京S-B9527'',''京A-B1234'''';
adoquery2.SQL.Add('where 车牌 in (''不可能的值'','+Temp+')');
Temp:string;Temp:=Temp+',''京S-B9527'''';//+',''京A-B1234'''';
adoquery2.SQL.Add('where 车牌 in (''不可能的值'''+Temp+')');//这样的需求是不应该用参数来解决的
//'不可能的值'是为了解决Temp=''时的情况的