这位兄台,sum需要根据一个或多个字段分组,只要分组正确,几个sum都不会出错的, 如:有下表score 学号 科目 成绩 1 语文 90 1 数学 100 1 计算机 100 2 语文 80 2 数学 70 2 计算机 90 TADOQuery.SQL.Add('select sum(语文) as a1,sum(数学) as b1,sum(计算机) as c1 from score group by 科目');
必须包含group by 子句才能实现sum的
程序还没有执行到 open 执行这个add 就出错啦错误提示如下 Project xx.exe raiseed exception calss Eaccessviolation with message 'Access Violntion at address' B03F511 in module' msjet40.dll
我想你搞错了: SUM中的参数是字段名而不是字段值。你的错误应该是字段不存在的错误码。应该这样写: TADOQuery.SQL.Add('select sum(成绩) as c1 from score group by 科目');
补充:上面的话是给pusy(pusy)的。
manboo(横刀) 说的对!我竟然没注意到,真是粗心。 应该这样写: aQuery := TADOQuery.Create(self); aQuery.Connection := ADOConnection1; aQuery.SQL.Add('select sum(a) as a1,sum(b) as b1,sum(c) as c1 ...'); aQuery.Open; ...//进行处理 aQuery.Close; aQuery.Free;
必须包含group by 子句才能实现sum的
大家注意啦,你们看清楚,程序还没有执行到open,就是还没有开始进行语法分析!只是SQL.ADD就出错了!程序还没有执行到 open 执行这个add 就出错啦错误提示如下 Project xx.exe raiseed exception calss Eaccessviolation with message 'Access Violntion at address' B03F511 in module' msjet40.dll
TADOQuery.Close TADOQuery.SQL.Clear; TADOQuery.SQL.Add('select sum(a) as a1,sum(b) as b1,sum(c) as c1'); TADOQuery.SQL.Open; //以上代码没有错,关键是你的a,b,c字段是不是都能要和呀,另外在Select //字句中的字段除的计算字段以外,都要加到group by 字句之中。
如:有下表score
学号 科目 成绩
1 语文 90
1 数学 100
1 计算机 100
2 语文 80
2 数学 70
2 计算机 90
TADOQuery.SQL.Add('select sum(语文) as a1,sum(数学) as b1,sum(计算机) as c1 from score group by 科目');
Project xx.exe raiseed exception calss Eaccessviolation with message 'Access Violntion at address' B03F511 in module' msjet40.dll
你的语句是有错的,SUM 要有GROUP BY 才能执行的
TADOQuery 是一个类,你该使用他的实例!
nj_draker (draker)
锈有铁生而伤铁,最能帮助你的人和最能伤害你的人都是你自己
从水源逃跑
皈依耶稣基督中。。
耶稣基督教导我们说:要有崇高的牺牲精神
要有伟大的宽恕精神
要有平等的博爱精神
神爱世人
SUM中的参数是字段名而不是字段值。你的错误应该是字段不存在的错误码。应该这样写:
TADOQuery.SQL.Add('select sum(成绩) as c1 from score group by 科目');
应该这样写:
aQuery := TADOQuery.Create(self);
aQuery.Connection := ADOConnection1;
aQuery.SQL.Add('select sum(a) as a1,sum(b) as b1,sum(c) as c1 ...');
aQuery.Open;
...//进行处理
aQuery.Close;
aQuery.Free;
Project xx.exe raiseed exception calss Eaccessviolation with message 'Access Violntion at address' B03F511 in module' msjet40.dll
TADOQuery.SQL.Clear;
TADOQuery.SQL.Add('select sum(a) as a1,sum(b) as b1,sum(c) as c1');
TADOQuery.SQL.Open;
//以上代码没有错,关键是你的a,b,c字段是不是都能要和呀,另外在Select
//字句中的字段除的计算字段以外,都要加到group by 字句之中。
你不可能吧adoquery1的名字改称这个吧