报表的涉及这样一个表 User_Table,字段如下:User_ID(人员编号),User_Name(姓名),User_DanWei(工作单位),
事例数据如下:
101 张三  电力局
102 李四  电力局
103 王麻子  电力局
104 张四  水利局
105 张五  水利局
106 张六  水利局
107 李五  电信局
108 李六  电信局
109 李八  电信局
109 李三  邮电局
110 王小二 邮电局
111 王小三 邮电局
问题要求:这是一次射击比赛,有三个粑位(粑位自定义,根椐实际情况自定义),分组进行射击,每三人一组,同一单位的不能同在一个组,也就是每个单位取一个人来进行分组,对上列事例数据产生报表格式如下:
----------------------------------------------------------------
第一粑位   第二粑位   第三粑位  组号
----------------------------------------------------------------
张三      张四     李五    1
电力局     水利局    电信局  
---------------------------------------------------------------
李三      李四     张五    2
邮电局     电力局    水利局
----------------------------------------------------------------...............(省略号代表生成的其它组,不一一举出)---------------------------------------------------------------对这个问题,我自已的解办法是通过修改表,代码建临时表,再用临时表来生成这样一个报表,思想如下,修user_table,加一个字段fenzhu_info(分组信息标识,整型数据),当在插入用户信息入表时,首先检测表中有无同一单位的数据,有,则fenzhu_nifo等于表中已存同一单位人数的数量加1,这样,保证同一个单位的人,拥有不同的分组信息标识,这样,下面的表可以改成如下:
101 张三  电力局  1
102 李四  电力局  2
103 王麻子  电力局  3
104 张四  水利局  1
105 张五  水利局  2
106 张六  水利局  3
107 李五  电信局  1
108 李六  电信局  2
109 李八  电信局  3
109 李三  邮电局  1
110 王小二 邮电局  2
111 王小三 邮电局  3
根据粑位建临时表,表的字段分别为第i粑加组号,这样,而临时表的数据,是查询上列修改过表的存储内容,如下实现,select * from user_table order bye fenzhu_info,插入信息时,足条取查询数据的姓名,所在单位,循环的挺入到新表中,每循环取数据3次挺入临时表一个记录,这样,可以保证了同一单位的人不在同一分组,最后用临时表来完成报表。看了这么大,不知道大家知道不知道我要表述的意思,我这个解决办法还没有实施,问题有可能并不能解决,而且感觉相当复杂,有哪个高人可帮忙说一下怎么解决,最关键的问题是本人对报表的设计还是一支半解。谢谢了

解决方案 »

  1.   

    其实你都想到临时表,但是为什么不在建立人员信息的时候就把你要规定的不同部门人员划分开呢
    A    B      C       D 
    101 张三  电力局  1 
    102 李四  电力局  2 
    103 王麻子 电力局  3 
    104 张四  水利局  1 
    105 张五  水利局  2 
    106 张六  水利局  3 
    107 李五  电信局  1 
    108 李六  电信局  2 
    109 李八  电信局  3 
    109 李三  邮电局  1 
    110 王小二 邮电局  2 
    111 王小三 邮电局  3 
    如你上面那样,order by D 一下就搞定了,,
    你的数据都实现好,直接拖字段就搞定了,,,
      

  2.   

    有一个控件:clientdataset /data access版面可以作为临时表处理,打印的东西直接连接到Clientdataset上面就OK,Clientdataset可以作为本地数据库数据,比较好用,,看一下,不用你那样插入,删除等操作,