高手求助,关于排序问题

webdou 2005-09-13 05:58:41
小弟初来乍到,对于delphi属于一知半解,目前朋友要求帮助写一个程序,要求如下
将公司每天所有员工的产量统计上来,然后进行排序,首先是在班组内从高到低显示,同时显示在车间内的名次,再显示在在全厂内的名次,这是每天的产量排序
然后在同时将每月的产量排序,每天是指从月初到当天的累计产量,也按照班组\车间\厂这样的形式显示出来,请问高手该怎么做呢

表格如下(工资按单价*产量)
编号 姓名 本日产量 工资 班组名次 车间名次 厂名次 本月产量 工资 班组名次 车间名次 厂名次
01 XXX 100 50.00 1 2 1 1000 500 1 1 2
02 XXX 99 49 2 1 2 1001 495 2 1 3
...全文
164 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
webdou 2005-09-15
  • 打赏
  • 举报
回复
我先试试,谢谢 chenylin(陈SIR) 啦,小弟先去试了
webdou 2005-09-14
  • 打赏
  • 举报
回复
编号 姓名 本日产量 工资 班组名次 车间名次 厂名次 本月产量 工资 班组名次 车间名次 厂名次
01 XXX 100 50.00 1 2 5 1050 500 3 1 1
02 XXX 99 49.00 2 1 6 1081 495 2 2 2
03 XXX 87 46.00 3 3 18 900 450 4 3 3
04 XXX 80 44.00 4 4 20 881 405 5 6 5
05 XXX 70 50.00 5 7 36 2000 1008 1 5 6
06 XXX 69 419 6 8 1 560 295 6 4 4

以上是要求的报表结果,其中班组名次\车间名次\厂名次,及后面的月班组名次\车间名次\厂名次,是由程序自动生成的,目前已有的资料为编号,姓名,本日产量,工资,
本月产量是由本月的开始日期截止到本日的,
xixuemao 2005-09-14
  • 打赏
  • 举报
回复
同时显示时该人在厂内\车间及班组的名次?

直接select出来不就是嘛?我觉得楼主还是没有叙述清楚,你把想要的结果列出来看看
webdou 2005-09-14
  • 打赏
  • 举报
回复
我需要说明的是,一个车间有很多班组,厂内有很多车间,我们需要实现的是同时显示时该人在厂内\车间及班组的名次
78hgdong 2005-09-14
  • 打赏
  • 举报
回复
上面错了:

select 厂名次, sum(本月产量), 工资, 班组名次, 车间名次, 厂名次
from table1
where Datediff(mm,日期,getdate())=0 and Datediff(dd,日期,getdate())=0
order by 本日产量 DESC
hqhhh 2005-09-14
  • 打赏
  • 举报
回复
把你的原表结构贴出来看看!
chenylin 2005-09-14
  • 打赏
  • 举报
回复
大致想了一下,希望对你有帮助

一、先创建统计表:TJB (数组也可以,但不如数据表容易做报表)
二、字段为:
1、序号:ID,自增;
2、车间:CJ,Varchar(10)
3、班组:BZ,Varchar(10)
4、人员编号:BH,CHAR(4)
5、人员姓名:XM,Varchar(20)
6、本日产量:BRCL, Decimal(10,2)
7、本日工资:BRGZ, Decimal(10,2)
8、本日班组名次:BRBZMC, Integer
9、本日车间名次:BRCJMC, Integer
8、本日工厂名次:BRGCMC, Integer
6、本月产量:BYCL, Decimal(10,2)
7、本月工资:BYGZ, Decimal(10,2)
8、本月班组名次:BYBZMC, Integer
9、本月车间名次:BYCJMC, Integer
8、本月工厂名次:BYGCMC, Integer
三、填写TJB中的数据:(你应该有一个人员表workers(里面存储了人员编号,姓名,所属班组,所属车间...)和工作量表work(人员编号、产量,所得工资...))
1、创建数据集:
ADODateSet1.close;
ADODateSet1.CommandText:='SELECT BH, SUM(CL) AS CL, SUM(GZ) AS GZ FROM Works WHERE (RQ BETWEEN :RQ1 AND :RQ2) GROUP BY BH';
ADODateSet1.open;
2、在数据集中进行排序:
先按班组或车间过滤,然后ADODataSet1.Sort:='cl desc';按产量排序;
3、写入统计表:
主要是把ADODataSet1的数据顺序号写入相应的名次字段;(用一个变量记录也可)
四、连续报表打印。
78hgdong 2005-09-13
  • 打赏
  • 举报
回复
select 编号 姓名 本日产量 工资 班组名次 车间名次 厂名次 本月产量 工资 班组名次 车间名次 厂名次
from AAA order by 每月的产量排序

2,495

社区成员

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

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