首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

帮忙解决一上考勤时间横显的有关问题,多谢

2012-12-14 
帮忙解决一下考勤时间横显的问题,谢谢数据库中记录格式现在需要查询出来的格式为员工号打卡日期打卡时间1

帮忙解决一下考勤时间横显的问题,谢谢

数据库中记录格式

现在需要查询出来的格式为
员工号   打卡日期        打卡时间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 ?


玩变身!?

其实就是一句话的原则:对不规则的原始数据进行预处理,导入到规则表中,方便使用。
[其他解释]

引用:
xiaomeng01262234 = zjokk ?
玩变身!?

其实就是一句话的原则:对不规则的原始数据进行预处理,导入到规则表中,方便使用。

小猛!=zjokk
谢谢老鸟的解答
[其他解释]
null

热点排行