with adoq do
begin
Close ;
Sql.Clear ;
Sql.Add('Select Count(*) From E01DT0002 Where ') ;
Sql.Add(' E01DT0002003=:E01DT0002003 and E01DT0002001<>:E01DT0002001 and ') ;
Sql.Add('(E01DT0002009 is null or E01DT0002009<:E01DT0002009)') ;
Parameters.ParamByName('E01DT0002003').Value :=1 ;
Parameters.ParamByName('E01DT0002001').Value :=2 ;
Parameters.ParamByName('E01DT0002009').Value :='2005-10-10' ;
str:=sql.text ;
Open ;
end ;
问题出在Str:='Select Count(*) From E01DT0002 Where
E01DT0002003=:E01DT0002003 and E01DT0002001<>:E01DT0002001 and
(E01DT0002009 is null or E01DT0002009<:E01DT0002009)'这是为什么,为什么明明给参数附了值还没用呢
begin
Close ;
Sql.Clear ;
Sql.Add('Select Count(*) From E01DT0002 Where ') ;
Sql.Add(' E01DT0002003=:E01DT0002003 and E01DT0002001<>:E01DT0002001 and ') ;
Sql.Add('(E01DT0002009 is null or E01DT0002009<:E01DT0002009)') ;
Parameters.ParamByName('E01DT0002003').Value :=1 ;
Parameters.ParamByName('E01DT0002001').Value :=2 ;
Parameters.ParamByName('E01DT0002009').Value :='2005-10-10' ;
str:=sql.text ;
Open ;
end ;
问题出在Str:='Select Count(*) From E01DT0002 Where
E01DT0002003=:E01DT0002003 and E01DT0002001<>:E01DT0002001 and
(E01DT0002009 is null or E01DT0002009<:E01DT0002009)'这是为什么,为什么明明给参数附了值还没用呢
begin
Close ;
Sql.Clear ;
Sql.Add('Select Count(*) From E01DT0002 Where ') ;
Sql.Add(' E01DT0002003=:E01DT0002003 and E01DT0002001<>:E01DT0002001 and ') ;
Sql.Add('(E01DT0002009 is null or E01DT0002009<:E01DT0002009)') ;
Parameters.ParamByName('E01DT0002003').Value :=1 ; //Parameters.ParamByName('E01DT0002003').AsInteger:=1;
Parameters.ParamByName('E01DT0002001').Value :=2 ; //同上修改
Parameters.ParamByName('E01DT0002009').Value :='2005-10-10' ; //Parameters.ParamByName('E01DT0002009').AsString:='2005-10-10'
str:=sql.text ;
Open ;
end ;
首先谢谢你回答我的问题,但
Parameters.ParamByName('E01DT0002003').AsInteger:=1;
这样的写法delphi不支持吧
Parameters.ParamByName('E01DT0002009').Value :=StrToDate('2005-10-10')
最好用显式转换parambyname('').asstring,asinteger...
---------------------------------------------
with adoq do
begin
Close ;
Sql.Clear ;
Sql.Add('Select Count(*) From E01DT0002 Where ') ;
Sql.Add(' E01DT0002003=:E01DT0002003 and E01DT0002001<>:E01DT0002001 and ') ;
Sql.Add('(E01DT0002009 is null or E01DT0002009<:E01DT0002009)') ;
Parameters.ParamByName('E01DT0002003').asinteger :=1 ;
Parameters.ParamByName('E01DT0002001').asinteger :=2 ;
Parameters.ParamByName('E01DT0002009').asstring :='2005-10-10' ;
str:=sql.text ;
Open ;
end ;
写过,这么强啊,我怎么写不出来呢,我只能Parameters.ParamByName('E01DT0002009').Value:='xx'