AdoQuery的SQL是: select sum(yy) from dba01 where id in(:id) param是id AdoQuery.Paramters.ParamByName('ID').DataType := ftString; AdoQuery.Paramters.ParamByName('ID').Value := '1,2,3,4,5';
to all 非常感谢大家但都不正确。AdoQuery.Paramters.ParamByName('ID').DataType := ftString; 根本就不需要AdoQuery会根据id字段的类型设置参数id的DataType
function tfqryfeewhere.get_month_where:string; var month,monthlist:string; i:integer; begin month:=cmbmonthstart.Text; monthlist:=' and (fee.Amonth in ('''+month+''','; for i:=cmbmonthstart.ItemIndex+1 to cmbmonthend.ItemIndex do begin month:=cmbmonthstart.Items[i]; monthlist:=monthlist+''''+month+''','; end; delete(monthlist,length(monthlist),1); monthlist:=monthlist+'))'; result:=monthlist; end;
select * from a where id in(select id from b)
select sum(yy) from dba01 where id in("1","2","3");
AdoQuery.Paramters[0].value:='123'; 不行吗?
sql语句我也会写但是这个查询必须用AdoQuery实现 sql是:select sum(yy) from dba01 where id in(:id) 关键问题是如何给id赋值。
to lxl(蚊蚊) 我的查讯条件是n个id值,如果只有一个值还用in干吗,直接id='123'不是更好吗?
用一个笨方法吧 with ADOQuery1 do begin Close; SQL.Clear; SQL.Add('DECLARE @id varchar(99) '); SQL.Add('SELECT @id = :id '); SQL.Add('EXECUTE(''SELECT sumyy = SUM(yy) '); SQL.Add(' FROM TABLE3 '); SQL.Add(' WHERE id IN ''+@id) '); Parameters.ParamByName('id').Value := '(1,2)'; Open; end;
select sum(yy) from dba01
where id in(:id)
param是id AdoQuery.Paramters.ParamByName('ID').DataType := ftString;
AdoQuery.Paramters.ParamByName('ID').Value := '1,2,3,4,5';
不好意思忘了说id是varchar类型
AdoQuery.Paramters.ParamByName('ID').Value := Edit1.text;//可否?
ADOQuery1.Parameters.ParamByName('id').asstring:='(1,2,3,4)';
非常感谢大家但都不正确。AdoQuery.Paramters.ParamByName('ID').DataType := ftString;
根本就不需要AdoQuery会根据id字段的类型设置参数id的DataType
var
month,monthlist:string;
i:integer;
begin
month:=cmbmonthstart.Text;
monthlist:=' and (fee.Amonth in ('''+month+''',';
for i:=cmbmonthstart.ItemIndex+1 to cmbmonthend.ItemIndex do
begin
month:=cmbmonthstart.Items[i];
monthlist:=monthlist+''''+month+''',';
end;
delete(monthlist,length(monthlist),1);
monthlist:=monthlist+'))';
result:=monthlist;
end;
where id in("1","2","3");
不行吗?
sql是:select sum(yy) from dba01
where id in(:id)
关键问题是如何给id赋值。
我的查讯条件是n个id值,如果只有一个值还用in干吗,直接id='123'不是更好吗?
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('DECLARE @id varchar(99) ');
SQL.Add('SELECT @id = :id ');
SQL.Add('EXECUTE(''SELECT sumyy = SUM(yy) ');
SQL.Add(' FROM TABLE3 ');
SQL.Add(' WHERE id IN ''+@id) ');
Parameters.ParamByName('id').Value := '(1,2)';
Open;
end;