是将符合那两个条件的筛选出来,然后把总数量求出来显示为“销售量”,还有单价*数量求和显示为“总价”
代码是下面的procedure TForm2.Button28Click(Sender: TObject);
begin
with ADOQuery10 do
begin
Close;
SQL.Clear;
SQL.Add('select sum(数量*单价) as 总价,sum(数量)as 销售量 from 批发中心销售情况统计');
SQL.Add('where '+ Combobox7.Text + ' like ''%' + Edit71.text + '%''');
SQL.Add('and 销售时间 between :mm and :nn');
Parameters.ParamByName('mm').Value:=datetostr(DateTimePicker1.Date);
Parameters.ParamByName('nn').Value:=datetostr(DateTimePicker2.Date);
Open;
Edit72.Text:=inttostr(fieldbyname('销售量').asinteger);
Edit73.Text:=inttostr(fieldbyname('总价').asinteger); end;
end;
数量和总价求出来了也在edit显示了,但是有个问题,dbgrid里不显示我筛选出来的内容了,肿么办?如果把select改成
SQL.Add('select 批发中心编号, 批发中心名称, 顾客编号, 顾客名称, 产品名称, 单价, 数量, 销售时间,sum(数量*单价) as 总价,sum(数量)as 销售量 from 批发中心销售情况统计');
的话,就会提示出错:试图执行的查询中不包含作为合计函数一部分的特定表达式“批发中心编号”求解答TAT
代码是下面的procedure TForm2.Button28Click(Sender: TObject);
begin
with ADOQuery10 do
begin
Close;
SQL.Clear;
SQL.Add('select sum(数量*单价) as 总价,sum(数量)as 销售量 from 批发中心销售情况统计');
SQL.Add('where '+ Combobox7.Text + ' like ''%' + Edit71.text + '%''');
SQL.Add('and 销售时间 between :mm and :nn');
Parameters.ParamByName('mm').Value:=datetostr(DateTimePicker1.Date);
Parameters.ParamByName('nn').Value:=datetostr(DateTimePicker2.Date);
Open;
Edit72.Text:=inttostr(fieldbyname('销售量').asinteger);
Edit73.Text:=inttostr(fieldbyname('总价').asinteger); end;
end;
数量和总价求出来了也在edit显示了,但是有个问题,dbgrid里不显示我筛选出来的内容了,肿么办?如果把select改成
SQL.Add('select 批发中心编号, 批发中心名称, 顾客编号, 顾客名称, 产品名称, 单价, 数量, 销售时间,sum(数量*单价) as 总价,sum(数量)as 销售量 from 批发中心销售情况统计');
的话,就会提示出错:试图执行的查询中不包含作为合计函数一部分的特定表达式“批发中心编号”求解答TAT
解决方案 »
- 请问如何处理Exception EAccessViolation in module错误?
- 内核编程群20264887,感兴趣可以加入(想进来问个问题就走的免入,谢谢).
- 问关于reportmachine设置不需要打印预览 直接打印的方法?
- “多步操作产生错误。请检查每一步的状态值”,请问这是什么错误啊???谢谢!!!
- 得了个MP3,良心上过不去,还是放放分吧
- 怎样在MSServer2000下设置密码?
- 为什么有的帖子点进去是乱码?而且还不少。
- 如何在Delphi7中使用QuickReport?哪儿有下?
- 能贴一个简单的delphi写的asp组件的代码吗?
- ??ActiveForm和Inf文件的困惑??
- 在同一dbgrid中显示不同表的问题
- 请问如何使用tstringlist的自定义排序回调函数
SQL.Text := 'select sum(数量*单价) as 总价,sum(数量)as 销售量 from 批发中心销售情况统计'
+ ' where '+ Combobox7.Text + ' like ''%' + Edit71.text + '%'''
+ ' and 销售时间 between ''' + datetostr(DateTimePicker1.Date)
+ ''' and ''' + datetostr(DateTimePicker2.Date) + '''';
这样自己合成后试一下,另外,先把sql语句用程序输出到memo里,复制到查询分析器里运行一下看看,是不是真的有结果
SQL.Add('select 批发中心编号,sum(数量*单价) as 总价,sum(数量)as 销售量 from 批发中心销售情况统计' group by 批发中心编号);
SQL.Add('select 批发中心编号,sum(数量*单价) as 总价,sum(数量)as 销售量 from 批发中心销售情况统计 group by 批发中心编号' );
dbgrid的数据集和程序处理时所要的数据集不要是同一个,如果是同一个,你dbgrid的数据集变了,当然不显示你原来的结果,可以拉两个adoquery,adoquery1作为dbgrid的数据集, adoquery2在操作的时候用。
~~~~~~~~~~~~~~~~
第二个问题。
1. select sum(a),sum(b) from table1
和
2. select c,sum(a),sum(b) from table1 group by c
这两者你要弄明白
1: 对table1的,a,b列的所有数据分别加总
2: 对table1按c对a,b列进行分组。