目的=判断的时间不重复...上下员工之间上下时间不重复.每天上下时间不重复条件1有一堆员工,一个时间段,可填写标准时间(用作标准来生成时间)效果.1生成当月的每位员工上下班记录
2生成当天每位员工上下班记录

解决方案 »

  1.   

     '当天
    select * from table where name='' and date='2010-02-01''当月
    select * from table where name='' and date >='2010-01-01' and date <='2010-01-31'
      

  2.   


     --当天
    select * from table where name='' and date='2010-02-01'
    --当月
    select * from table where name='' and date >='2010-01-01' and date <='2010-01-31'
      

  3.   

    当月
    select * from table where name='' and Month(date) =1 
      

  4.   

    我已写过.不过有问题.程序太长贴不出来我的难题在判断上下两个时间直接不重复我采用的是重复+随机数*-1 的方法判断可行已过...但是出来的效果总是有一点重复...(非常难跟)如能帮忙看的话.我可以E-MAIL代码给大家...
      

  5.   

    把你的数据和要求的结果详细说说。
    再吧你的sql的代码写写下,别的不要。
      

  6.   

    Dim m As Integer
       For i = 0 To rdEmp.RecordCount - 1
       m = 0
          sEmp = rdEmp![EmpID]
          sDate = IIf(isNull(rdEmp![dateHired]), sDt, rdEmp![dateHired])
          eDate = IIf(isNull(rdEmp![LCdate]), Date, rdEmp![LCdate])
          
          SQL = "delete from tmp_Trans where EmpID='" & sEmp & "' and Date>=#" & sDt & "# and Date<=#" & eDt & "#"
          gLTClockDB.Execute SQL
          
          If sDate > eDt Then   '入厂日期大于处理日期的最后一天时,不处理
             GoTo Next_Emp
          End If
          If eDate < sDt Then  '辞职日期小于处理日期的第一天时,不处理
             GoTo Next_Emp
          End If
          
          SQL = "select * from tmp_Trans"
          Set rdTmp = gLTClockDB.OpenRecordset(SQL)
          currDt = sDt
          Do While currDt <= eDt
             If currDt > eDate Then
                Exit Do
             End If
             If currDt < sDate Then   '入厂日期的问题 2002-06-05
                GoTo Next_Date
                'Exit Do
             End If
          
             rdTmp.AddNew
             rdTmp![EmpID] = sEmp
             rdTmp![Date] = currDt
      

  7.   

    '         Randomize  ''2005-09-29
    '         X = Round(Rnd * 10, 0) - 5   '取随机数*10,然后四舍五入,-5是上下浮动5分钟.
              X = Round(Rnd * 100, 0)
             tsde1 = DateAdd("n", RndX(X) * -1, dtStart1)
             'Randomize  ''2005-09-29
             X = Round(Rnd * 100, 0)
             tsde2 = DateAdd("n", RndX(X) * -1, dtStart2)
    '         Randomize  ''2005-09-29
             X = Round(Rnd * 100, 0)
             If dtStart3 <> "_:_" And IsDate(dtStart3) Then
              tsde3 = DateAdd("n", RndX(X) * -1, dtStart3)
             End If
    '         Randomize  ''2005-09-29
             X = Round(Rnd * 100, 0)
              tede1 = DateAdd("n", RndX(X), dtEnd1)
    '         Randomize  ''2005-09-29
             X = Round(Rnd * 100, 0)
             tede2 = DateAdd("n", RndX(X), dtEnd2)
     '        Randomize  ''2005-09-29
             X = Round(Rnd * 100, 0)
             If dtEnd3 <> "_:_" And IsDate(dtEnd3) Then
                  tede3 = DateAdd("n", RndX(X), dtEnd3)
             End If
      

  8.   

    If m = 0 Then                '对比上一位员工
                    For k = 0 To 1000
                        If tsde1 = tsde1c Then
                        k = k + 1
                             X = Round(Rnd * 100, 0)
                             tsde1 = DateAdd("n", RndX(X) * -1, dtStart1)
                        Else
                        Exit For
                        End If
                    Next k
                           
                             'Randomize  ''2005-09-29
                    For k = 0 To 1000
                           If tsde2 = tsde2c Then
                           k = k + 1
                             X = Round(Rnd * 100, 0)
                             tsde2 = DateAdd("n", RndX(X) * -1, dtStart2)
                              Else
                              Exit For
                              End If
                    Next k
                    '         Randomize  ''2005-09-29
                    For k = 0 To 1000
                             If tsde3 = tsde3c Then
                             k = k + 1
                             X = Round(Rnd * 100, 0)
                             If dtStart3 <> "_:_" And IsDate(dtStart3) Then
                              tsde3 = DateAdd("n", RndX(X) * -1, dtStart3)
                             End If
                             Else
                             Exit For
                             End If
                    Next k
                    '         Randomize  ''2005-09-29
                    For k = 0 To 1000
                            If tede1 = tede1c Then
                            k = k + 1
                             X = Round(Rnd * 100, 0)
                              tede1 = DateAdd("n", RndX(X), dtEnd1)
                           
                            Else
                            Exit For
                            End If
                    Next k
                            
                    For k = 0 To 1000
                             If tede2 = tede2c Then
                              k = k + 1
                    '         Randomize  ''2005-09-29
                             X = Round(Rnd * 100, 0)
                             tede2 = DateAdd("n", RndX(X), dtEnd2)
                             Else
                             Exit For
                             End If
                    Next k
                    
                    For k = 0 To 1000
                            If tede3 = tede3c Then
                            k = k + 1
                     '        Randomize  ''2005-09-29
                             X = Round(Rnd * 100, 0)
                             If dtEnd3 <> "_:_" And IsDate(dtEnd3) Then
                            tede3 = DateAdd("n", RndX(X), dtEnd3)
                             End If
                            Else
                             Exit For
                             End If
                    Next kElse                '对比上次时间
                        For k = 0 To 1000
                                 If tsd1 = tsde1 Then
                                 k = k + 1
                                 X = Round(Rnd * 100, 0)
                                 tsde1 = DateAdd("n", RndX(X) * -1, dtStart1)
                                 Else
                                 Exit For
                                End If
                        Next k
                                 'Randomize  ''2005-09-29
                        For k = 0 To 1000
                               If tsd2 = tsde2 Then
                               k = k + 1
                                 X = Round(Rnd * 100, 0)
                                 tsde2 = DateAdd("n", RndX(X) * -1, dtStart2)
                                Else
                                 Exit For
                                End If
                        Next k
                        '         Randomize  ''2005-09-29
                        For k = 0 To 1000
                                 If tsd3 = tsde3 Then
                                 k = k + 1
                                 X = Round(Rnd * 100, 0)
                                 If dtStart3 <> "_:_" And IsDate(dtStart3) Then
                                 tsde3 = DateAdd("n", RndX(X) * -1, dtStart3)
                                 End If
                                 Else
                                 Exit For
                                 End If
                        Next k
                        '         Randomize  ''2005-09-29
                        For k = 0 To 1000
                                If ted1 = tede1 Then
                                k = k + 1
                                 X = Round(Rnd * 100, 0)
                                  tede1 = DateAdd("n", RndX(X), dtEnd1)
                                Else
                                Exit For
                                End If
                        Next k
                        For k = 0 To 1000
                                 If ted2 = tede2 Then
                                 k = k + 1
                        '         Randomize  ''2005-09-29
                                 X = Round(Rnd * 100, 0)
                                 tede2 = DateAdd("n", RndX(X), dtEnd2)
                                 Else
                                 Exit For
                                 End If
                        Next k
                        For k = 0 To 1000
                                If ted3 = tede3 Then
                                k = k + 1
                         '        Randomize  ''2005-09-29
                                 X = Round(Rnd * 100, 0)
                                 If dtEnd3 <> "_:_" And IsDate(dtEnd3) Then
                                 tede3 = DateAdd("n", RndX(X), dtEnd3)
                                 End If
                                 Else
                                 Exit For
                                 End If
                        Next k
    End If  rdTmp![TS1] = tsde1
      rdTmp![TS2] = tsde2
      rdTmp![TS3] = tsde3
      rdTmp![TE1] = tede1
      rdTmp![TE2] = tede2
      rdTmp![TE3] = tede3                        rdTmp![LateTimes] = IIf(txtLate = "", 0, txtLate)
                            rdTmp![OTHour] = IIf(txtOT = "", 0, txtOT)
                                    If Weekday(currDt) = 1 Or Weekday(currDt) = 7 Then  '当为星期六和星期日时
                                           If rdTmp.Fields("TS1") <> "" And rdTmp.Fields("TE1") <> "" Then  '写入工时
                                              rdTmp.Fields("SunHour") = 4  '08-07-03 yu |rdTmp.Fields("SunHour") = 3.5
                                           End If
                                           If rdTmp.Fields("TS2") <> "" And rdTmp.Fields("TE2") <> "" Then  '写入工时
                                              rdTmp.Fields("SunHour") = rdTmp.Fields("SunHour") + 4 '08-07-03 yu | rdTmp.Fields("SunHour") = rdTmp.Fields("SunHour") + 4.5
                                           End If
                                           If rdTmp.Fields("OThour") <> "" Then
                                              rdTmp.Fields("SunHour") = rdTmp.Fields("SunHour") + rdTmp.Fields("OThour")
                                           End If
                                        Else
                                           If rdTmp.Fields("TS1") <> "" And rdTmp.Fields("TE1") <> "" Then  '写入工时
                                              rdTmp.Fields("apHour") = 4  '08-07-03 yu | rdTmp.Fields("apHour") = 3.5
                                           End If
                                           If rdTmp.Fields("TS2") <> "" And rdTmp.Fields("TE2") <> "" Then  '写入工时
                                              rdTmp.Fields("apHour") = rdTmp.Fields("apHour") + 4 '08-07-03 yu |  rdTmp.Fields("apHour") = rdTmp.Fields("apHour") + 4.5
                                           End If
                                           If rdTmp.Fields("OThour") <> "" Then
                                              rdTmp.Fields("EveHour") = rdTmp.Fields("OThour")
                                           End If
                                    End If
             rdTmp.Update
              
                   tsd1 = tsde1 '取第1个,时间
                   tsd2 = tsde2
                   tsd3 = tsde3
                   ted1 = tede1
                   ted2 = tede2
                   ted3 = tede3
    If m = 0 Then
                   tsde1c = tsde1 '取第2个,员工
                   tsde2c = tsde2
                   tsde3c = tsde3
                   tede1c = tede1
                   tede2c = tede2
                   tede3c = tede3
    End If
     m = m + 1
      

  9.   

    假定你的原始数据为进出门的刷卡记录。
    生成上下班记录只要将进出门记录进行配对即可。
    循环所有员工,以员工、整个统计时间段为条件,按时间排序进行查询。这样每个员工按照时间序循环分析进出门记录:
      需要变量:上班标记,上班时间,下班时间
    1)对进门记录
      IF 上班标记 = 下班 THEN
        上班时间 = 打卡时间
        上班标记 = 上班
      'ELSE
        '忽略重复打卡
      END IF
    2)对出门记录
      IF 上班标记 = 上班 THEN
        下班时间 = 打卡时间
        用 上班时间、下班时间 生成一条上下班记录
        上班标记 = 下班
      'ELSE
        '忽略重复打卡
      END IF
      

  10.   

    tigerandufo
    你这个代码似乎比较糟糕哦,
    我现在也在在这个考勤的问题,但是我这没你那复杂,我只要考虑一个班次就可以,不知道你是怎么考虑跨天考勤这个问题的。比如上班时间20:00,下班时间第二天02:00。