帮忙解决一下考勤时间横显的有关问题,多谢
帮忙解决一下考勤时间横显的问题,谢谢
数据库中记录格式

现在需要查询出来的格式为
员工号 打卡日期 打卡时间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
就是按员工编号将查询时间段内的打卡时间按天列出来
给个思路也行
给段代码更好
谢谢
------解决方案--------------------
这种没有任何限定的就用最直接的方法:
------解决方案--------------------
这个设计有点毛病。假如有人恶作剧,一天内打了 100 次卡,你岂不是要出现 100 列数据。
我们原来的设计更复杂一些,在一个表中保存员工的某期间的上下班时间。分析流程将把一个员工全天的打卡记录分成若干个上班时间段和下部时间段。在同一上班时间段内,最后一次打卡记录有效;在同一下班时间段内,首次打卡有效。
因此,考勤记录的格式是固定的。
数据库中记录格式
现在需要查询出来的格式为
员工号 打卡日期 打卡时间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
就是按员工编号将查询时间段内的打卡时间按天列出来
给个思路也行
给段代码更好
谢谢
------解决方案--------------------
这种没有任何限定的就用最直接的方法:
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 列数据。
我们原来的设计更复杂一些,在一个表中保存员工的某期间的上下班时间。分析流程将把一个员工全天的打卡记录分成若干个上班时间段和下部时间段。在同一上班时间段内,最后一次打卡记录有效;在同一下班时间段内,首次打卡有效。
因此,考勤记录的格式是固定的。