with q_kcink do //计算oracle中数据条数
begin
close;
sql.Clear;
sql.Add('select count(*) as countkc from kcink where arrivedate=:aa');
Parameters.ParamByName('aa').Value:=strtodate(adate);
open;
end;
其中adate是字符‘2004-08-31’运行后报‘not a single-group group function’的错误
请问这是什么原因?
begin
close;
sql.Clear;
sql.Add('select count(*) as countkc from kcink where arrivedate=:aa');
Parameters.ParamByName('aa').Value:=strtodate(adate);
open;
end;
其中adate是字符‘2004-08-31’运行后报‘not a single-group group function’的错误
请问这是什么原因?
确定是数据库的问题,(如果用access数据库,'2004-08-31'的却不是日期写法)
begin
close;
sql.Clear;
sql.Add('select count(*) as countkc from kcink where arrivedate=:aa');
Parameters.ParamByName('aa').Value:=strtodate(adate);
open;
end;
改为
with q_kcink do //计算oracle中数据条数
begin
close;
sql.Clear;
sql.Add('select count(*) countkc from kcink where arrivedate=:aa ');//注意这行!
Parameters.ParamByName('aa').Value:=strtodate(adate);
open;
end;
Parameters.ParamByName('aa').Value:=strtodate(adate);改为下面试试:Parameters.ParamByName('aa').AsDate:=strtodate(adate);另外. 看看oracle中日期/时间类型 是不是 yyyy-mm-dd格式的
我没用过oracle
就是说时间类型转换有误的
得看看你的字段数据类型
begin
close;
sql.Clear;
sql.Add('select count(*) as countkc from kcink where arrivedate=:aa');
Parameters.ParamByName('aa').Value:=strtodatetime(adate);
open;
end;
with q_kcink do //计算oracle中数据条数
begin
close;
sql.Clear;
sql.Add('select count(*) as countkc from ');
sql.Add('(select * from kcink where arrivedate=:aa) tmp');
Parameters.ParamByName('aa').Value:=strtodate(adate);
open;
end;
query1.SQL.Clear;
query1.SQL.add('select * from gz_jbqkyue where to_char(C45,''yyyy-mm'')=:date and c1='''+edit1.text+''' ');
query1.parambyname('date').asstring:= formatdatetime('yyyy-mm',datetimepicker1.datetime);
query1.open;看看这个
sql.Add('select count(*) as countkc from kcink where arrivedate=to_date(:aa)');
试试:
with q_kcink do //计算oracle中数据条数
begin
close;
sql.Clear;
sql.Add('select count(*) as countkc from kcink where to_char(arrivedate,''YYYY-MM-DD'')=:aa');
Parameters.ParamByName('aa').Value:=adate;
open;
end;