帮忙解决一上考勤时间横显的有关问题,多谢
帮忙解决一下考勤时间横显的问题,谢谢
数据库中记录格式
现在需要查询出来的格式为
员工号 打卡日期 打卡时间1 打卡时间2 打卡时间3 ... 打卡时间N
107592 2012-05-23 00:01:02 00:01:08 00:10:00
107592 2012-05-24 time1 time2 NULL NULL
107593 2012-05-23 00:01:12 00:01:18 00:10:10
107593 2012-05-24 time1 time2 NULL NULL
就是按员工编号将查询时间段内的打卡时间按天列出来
给个思路也行
给段代码更好
谢谢
------最佳解决方案--------------------
怎样通过datagrid显示出来
------其他解决方案--------------------
所以说没有没有条件的需求是无效需求。
不能制定一套可操作的规则,就无法编出可用的程序。
那还不如雇个人,随机应变好了。
------其他解决方案--------------------
交叉表查询。
------其他解决方案--------------------
这种没有任何限定的就用最直接的方法:
------其他解决方案--------------------
这个设计有点毛病。假如有人恶作剧,一天内打了 100 次卡,你岂不是要出现 100 列数据。
我们原来的设计更复杂一些,在一个表中保存员工的某期间的上下班时间。分析流程将把一个员工全天的打卡记录分成若干个上班时间段和下部时间段。在同一上班时间段内,最后一次打卡记录有效;在同一下班时间段内,首次打卡有效。
因此,考勤记录的格式是固定的。
------其他解决方案--------------------
谢谢楼上两位的解答
其实问题我已经考虑到了
我写了一段代码 指定只显示6条记录
在datagrid中显示时150条数据就很慢
我们所代理的那个考勤软件10万条的数据很快就显示出来了
只不过导出特别慢
所以望高手给段代码 能快速显示数据
------其他解决方案--------------------
刷卡记录只能算原始证据,仅供以后查证比对。
真正有用的应该是一张考勤表,就是你需要的“横向表”——工号,日期,三个班次的上下班时间?
定时处理:每天都将上一天的刷卡记录汇总到考勤表中。
实时处理:查询前先将当前的刷卡记录汇总到考勤表中。
这样处理每次汇总的数据量不大,而且考勤表已经是规整的数据了,查询很方便。
------其他解决方案--------------------
其实问题我已经考虑到了
我写了一段代码 指定只显示6条记录
在datagrid中显示时150条数据就很慢
我们所代理的那个考勤软件10万条的数据很快就显示出来了
只不过导出特别慢
所以望高手给段代码 能快速显示数据
------其他解决方案--------------------
xiaomeng01262234 = zjokk ?
数据库中记录格式
现在需要查询出来的格式为
员工号 打卡日期 打卡时间1 打卡时间2 打卡时间3 ... 打卡时间N
107592 2012-05-23 00:01:02 00:01:08 00:10:00
107592 2012-05-24 time1 time2 NULL NULL
107593 2012-05-23 00:01:12 00:01:18 00:10:10
107593 2012-05-24 time1 time2 NULL NULL
就是按员工编号将查询时间段内的打卡时间按天列出来
给个思路也行
给段代码更好
谢谢
------最佳解决方案--------------------
怎样通过datagrid显示出来
------其他解决方案--------------------
所以说没有没有条件的需求是无效需求。
不能制定一套可操作的规则,就无法编出可用的程序。
那还不如雇个人,随机应变好了。
------其他解决方案--------------------
交叉表查询。
------其他解决方案--------------------
这种没有任何限定的就用最直接的方法:
iRow = 0
iCol = 0
sLast工号 = ""
dtLast日期 = CDate(0)
Set rs = 查询("按工号、时间排序")
While Not rs.EOF
If (rs("工号") <> sLast工号) Or (DateValue(rs("时间")) <> dtLast日期) Then
sLast工号 = rs("工号")
dtLast日期 = DateValue(rs("时间"))
iRow = iRow + 1
iCol = 3
Cells(iRow, 1) = sLast工号
Cells(iRow, 2) = dtLast日期
Else
iCol = iCol + 1
End If
Cells(iRow, iCol) = TimeValue(rs("时间"))
rs.MoveNext
Wend
------其他解决方案--------------------
这个设计有点毛病。假如有人恶作剧,一天内打了 100 次卡,你岂不是要出现 100 列数据。
我们原来的设计更复杂一些,在一个表中保存员工的某期间的上下班时间。分析流程将把一个员工全天的打卡记录分成若干个上班时间段和下部时间段。在同一上班时间段内,最后一次打卡记录有效;在同一下班时间段内,首次打卡有效。
因此,考勤记录的格式是固定的。
------其他解决方案--------------------
谢谢楼上两位的解答
其实问题我已经考虑到了
我写了一段代码 指定只显示6条记录
在datagrid中显示时150条数据就很慢
我们所代理的那个考勤软件10万条的数据很快就显示出来了
只不过导出特别慢
所以望高手给段代码 能快速显示数据
------其他解决方案--------------------
刷卡记录只能算原始证据,仅供以后查证比对。
真正有用的应该是一张考勤表,就是你需要的“横向表”——工号,日期,三个班次的上下班时间?
定时处理:每天都将上一天的刷卡记录汇总到考勤表中。
实时处理:查询前先将当前的刷卡记录汇总到考勤表中。
这样处理每次汇总的数据量不大,而且考勤表已经是规整的数据了,查询很方便。
------其他解决方案--------------------
其实问题我已经考虑到了
我写了一段代码 指定只显示6条记录
在datagrid中显示时150条数据就很慢
我们所代理的那个考勤软件10万条的数据很快就显示出来了
只不过导出特别慢
所以望高手给段代码 能快速显示数据
------其他解决方案--------------------
xiaomeng01262234 = zjokk ?