分类汇总的问题

snowfoxyr 2005-02-02 05:09:52
我是ACCESS数据库,表里有十几列,例如
工单 1加工费 1加工人 2加工费 2加工人 ... ... ... ...
11 10 a 20 a
12 10 b 20 b
11 5 a 20 b
... ... ... ... ...
比如我想分类统计某加工人不同加工费,或是某工单下不同人不同类别的总加工费,或是按时间统计等等。该怎么做?我是打算做一个ComBobox来选择按什么进行汇总。请详细些,小弟基础比较差,分不够另外开帖。


...全文
161 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
特招 2005-02-05
  • 打赏
  • 举报
回复
//将所有的列都显示到下拉框中
void __fastcall TForm1::Button5Click(TObject *Sender)
{
for(int i=0;i<ADOQuery1->FieldCount;i++)
{
ComboBox1->Items->Add(ADOQuery1->Fields->Fields[i]->FieldName);
}
}

//统计
void __fastcall TForm1::Button6Click(TObject *Sender)
{
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
AnsiString sql = "select sum(加工费) as 总加工费,"+ComboBox1->Text+" from tablea group by ";
sql = sql + ComboBox1->Text;
ADOQuery1->SQL->Add(sql);
ADOQuery1->Open();
}

snowfoxyr 2005-02-03
  • 打赏
  • 举报
回复
我已经按照samchoy(SamChoy)的改了数据库,发现好用了很多,生成的文件也小了,呵呵,关键是省了不少代码,可是我用GROUP BY进行统计时,DBGRID总显示为空,一条记录也没有。可能我用的不对吧。
麻烦给个代码,感谢!
snowfoxyr 2005-02-03
  • 打赏
  • 举报
回复
又一次看到了自己如此逊色,努力啊,呵呵!我去试试楼上的新表模式
samchoy 2005-02-03
  • 打赏
  • 举报
回复
我认为把表设计成这个样子

工单 类别 加工费 加工人
11 1 10 a
11 2 20 a
11 ...
12 1 10 b
12 2 20 b
... ...

这样就可以很方便的用GROUP BY进行统计,而且可以允许不同工单有不同的加工类别

参考一下
h98458 2005-02-03
  • 打赏
  • 举报
回复
用复合查询和group by语句试试
楼主把你所要求的写具体些
我还没有完全看明白呢
还有可以用报表的形式(quickreport)
snowfoxyr 2005-02-03
  • 打赏
  • 举报
回复
这样真的没办法了吗?那应该如何设计数据库啊
redlei 2005-02-03
  • 打赏
  • 举报
回复
关注
mymyal123 2005-02-03
  • 打赏
  • 举报
回复
学习
samchoy 2005-02-03
  • 打赏
  • 举报
回复
GROUP BY语句要放在FROM语句的后面
h98458 2005-02-03
  • 打赏
  • 举报
回复
select 加工人,sum(加工费) as abc From total group by 加工人
h98458 2005-02-03
  • 打赏
  • 举报
回复
一般数据库都支持sum函数:
试试这样:
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select 加工人,sum(加工费) From total group by 加工人");
ADOQuery1->Open();
snowfoxyr 2005-02-03
  • 打赏
  • 举报
回复
我是用的ACCESS的数据库
Maconel 2005-02-03
  • 打赏
  • 举报
回复
你用的什么数据库,支持sum函数吗,
我数据库不太熟,不知道这个函数怎么用的,反正使用sql语句来得到数据集就是上边那个方法。
snowfoxyr 2005-02-03
  • 打赏
  • 举报
回复
楼上的提示 “操作符丢失在 sum(加工费)group by 加工人 中”
我写成这样
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select 加工人,sum(加工费) group by 加工人 From total");
ADOQuery1->Open();
缺提示sum函数未定义。这是怎么回事啊
Maconel 2005-02-03
  • 打赏
  • 举报
回复
AnsiString sSql;
sSql.printf("select %s, sum(%s) group by %s from %s", "加工人", "加工费", "加工人", "total");
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sSql);
ADOQuery1->Open();
snowfoxyr 2005-02-03
  • 打赏
  • 举报
回复
ADOQuery1->SQL->Add("select 加工人,sum(加工费) group by 加工人 From total");我是这样写的,请问应该怎么写啊!
samchoy 2005-02-02
  • 打赏
  • 举报
回复
我觉得表设计成这个样子很难实现,关注

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧