本人现在在做一个员工考勤管理系统,碰到如下问题
我现在有一张员工考勤的月统计报表
他里面的记录是这样子的:
编号:    姓名:     日期:              签到标识:
1        aa          2004-01-01         #
1        aa          2004-01-02         #
1        aa          2004-01-03         #
1        aa          2004-01-04         #
1        aa          2004-01-04         &
1        aa          2004-01-05         #
2        nn          2004-01-01         #
2        nn          2004-01-02         #
2        nn          2004-01-03         #
2        nn          2004-01-04         #现要将该表格以如下形式输出,(注在MSFlexGrid控件中输出)
编号:  姓名:   1  2  3  4  5  6  7  8  9 10 11 12 13 .........30--->这个是日期
1       aa     #  #  #  #  #  #  ...........
2       nn     #  #  #  #  #  #  ..........
.
.
.
.
n       ..    #  #  #  #  #  #  .............
请问哪位大侠,帮帮小弟这个忙啊!
散分100啊!

解决方案 »

  1.   

    晕,这问题太简单了阿!
    建一个表不就是吗?字段为:编号,姓名,日期,签到没有(boolean)
    set rs=db.execute("select 签到 from youTable where name='**' and 日期=‘**’")
    if rs.fields(0).value=true then
        网格中写#
    else
        网各种写&
    end if
      

  2.   

    参考一下这个吧!
    Create table test (OrderNo varchar(10), Get_Date char(10), Sales   Varchar(10),ItemNo  Varchar(20),Amount  Smallint )
    go
    insert test values('001','2004-01-01','ABC', 'A001',1000)
    insert test values('001','2004-01-05','QQQ', 'A001',5000)
    insert test values('002','2004-02-01','ABC', 'A001',2000)
    insert test values('003','2004-03-01','ABC', 'A001',3000)
    insert test values('004','2004-06-01','ABC', 'A001',6000)declare @sql varchar(8000)
    set @sql = 'select Sales'
    select @sql = @sql + ',sum(case left(Get_Date,7) when '''+left(Get_Date,7)+''' then Amount end) ['+ left(Get_Date,7)+']' from (select distinct left(Get_Date,7) as Get_Date from test) as a
    select @sql = @sql+' from test group by Sales'
    print @sql
    exec(@sql)
      

  3.   

    编号:  姓名:   1  2  3  4  5  6  7  8  9 10 11 12 13 .........30--->这个是日期
    1       aa     #  #  #  #  #  #  ...........
    2       nn     #  #  #  #  #  #  ..........
    .
    .
    .
    .
    n       ..    #  #  #  #  #  #  .............
    //先填充表格,毕竟未签到的记录比较少。
    用一个查询语句列出未签到的记录select * from 表 where 签到标识='&'
    定义单元格的x,y值
    根据查询结果确定 哪些'#' 需要改成 '&'
      

  4.   

    楼上的
    编号:  姓名:   1  2  3  4  5  6  7  8  9 10 11 12 13 .........30--->这个是日期
    1       aa     #  #  #  #  #  #  ...........
    2       nn     #  #  #  #  #  #  ..........
    .
    .
    .
    .
    n       ..    #  #  #  #  #  #  .............
    这个不是一张存在的表,是我要输出的一种形式而已了,难怪这里没有高手了吗?
      

  5.   

    Select 编号,姓名,[1]=max(case when ='2004-01-01' then 签到标识 end),
              [2]=max(case when ='2004-01-02' then 签到标识 end),
              ......
    From TableName
    Group by 编号,姓名
      

  6.   

    上面的办法值的一试,不过,在ACCESS里支持的吗?
      

  7.   

    Access中可借助于交叉查询向导
      

  8.   

    Access:TRANSFORM max([签到标识])
    SELECT [编号], [姓名]
    FROM Table
    GROUP BY [编号], [姓名]
    PIVOT Format([日期],"Short Date");
      

  9.   

    将Format([日期],"Short Date")改为Format([日期],"D");
    只显示“日”,不显示年月
      

  10.   

    dim i as interger
    rec.open select * from table where 'val(date([日期]))'=1      '查询出1号的所有记录
    for i=1 to rec.recordcount   msflextgrid1.textarray(i,0)=i
      msflextgrid1.textarray(i,1)=rec![姓名]
      msflextgrid1.textarray(i,2)=rec![标识]next i
    rec.closerec.open select [标识] from table where 'val(date([日期]))'=2      '查询出2号的所有记录
    for i=1 to rec.recordcount   msflextgrid1.textarray(i,3)=rec![标识]next i
    rec.close

    依次类推
      

  11.   

    先问一下是 access 还是 sql
    如果是 access ,那么使用交叉查询就很简单了,如果用 sql,就使用上面各位的方法
      

  12.   

    select 编号,姓名,(case 日期 when '2004-01-01' then 签到标识) as 1,(case 日期 when '2004-01-02' then 签到标识) as 2,...........
    from 表
      

  13.   

    如果你用的是ACCESS库,可以建立一个“交叉查询”,按照向导做就可以达到你的要求了
      

  14.   

    不用建表啊,也不用动态建表啊数据直接在原表里有直接定义临时的recordset在open方法里用查询
    每个用户的签到情况然后用ListView自己排好
    list.ColumnHeaders.Add 把头加好
    然后定义一个listitem
    用listitem.ListSubItems.Add一个个加完事
      

  15.   

    MSFlexGrid?才看见,那像刚才那样建个临时记录集即可
      

  16.   

    selet * from table group by 姓名 order by 日期
    用Listview 自己添加每个数据
      

  17.   

    谢谢,vbman2003(家人) ,我的问题已经解决,真的非常感谢了啊!顺便问一句,有没有 专门的网站是搞这种ACCESS里的SQL语句的