本人现在在做一个员工考勤管理系统,碰到如下问题
我现在有一张员工考勤的月统计报表
他里面的记录是这样子的:
编号: 姓名: 日期: 签到标识:
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 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啊!
解决方案 »
- 用WEBBROWSER打印网页指定区域出现乱码
- 关于此功能的实现
- vb中如何通过XML文件来生成静态的html文件啊?
- 怎样用代码产生控件?????!!!!!??????
- ●●●●●200 分●●●●● 求打开WINDOWS的颜色选择对话框...
- 哎,实在来不及了,只好上来问问了
- 怎样设置listview控件象资源管理器的一样。
- 请教高手:Excel ActiveX 组合框控件,其属性选项卡中的名称,如何通过代码修改?
- 江湖救急!!!关于VB怎样使用Media Player的问题!
- 高手帮忙!help me
- 如何改变屏幕分辨率?在线等...
- form2.0中的COMBOBOX为何不支持滚动鼠标?
建一个表不就是吗?字段为:编号,姓名,日期,签到没有(boolean)
set rs=db.execute("select 签到 from youTable where name='**' and 日期=‘**’")
if rs.fields(0).value=true then
网格中写#
else
网各种写&
end if
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)
1 aa # # # # # # ...........
2 nn # # # # # # ..........
.
.
.
.
n .. # # # # # # .............
//先填充表格,毕竟未签到的记录比较少。
用一个查询语句列出未签到的记录select * from 表 where 签到标识='&'
定义单元格的x,y值
根据查询结果确定 哪些'#' 需要改成 '&'
编号: 姓名: 1 2 3 4 5 6 7 8 9 10 11 12 13 .........30--->这个是日期
1 aa # # # # # # ...........
2 nn # # # # # # ..........
.
.
.
.
n .. # # # # # # .............
这个不是一张存在的表,是我要输出的一种形式而已了,难怪这里没有高手了吗?
[2]=max(case when ='2004-01-02' then 签到标识 end),
......
From TableName
Group by 编号,姓名
SELECT [编号], [姓名]
FROM Table
GROUP BY [编号], [姓名]
PIVOT Format([日期],"Short Date");
只显示“日”,不显示年月
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
。
依次类推
如果是 access ,那么使用交叉查询就很简单了,如果用 sql,就使用上面各位的方法
from 表
每个用户的签到情况然后用ListView自己排好
list.ColumnHeaders.Add 把头加好
然后定义一个listitem
用listitem.ListSubItems.Add一个个加完事
用Listview 自己添加每个数据