Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]同一个人,同一天,如果时间相差15分钟之内的,只保存最后那条记录

菜鸟  发表于:2013-05-24 15:15:27  
复制

同一个人,同一天,如果时间相差15分钟之内的,只保存最后那条记录!去掉重复记录

 

Top
漏蛧尐魚℡ 发表于:2013-05-24 15:34:58
这个里面都是同一个人?        

菜鸟 发表于:2013-05-24 15:37:35
不是的,有不同的人的!

煮江品茶 发表于:2013-05-24 20:49:54

 

 

示例

 

 

一、写两个查询
1、行政查询:
SELECT 行政部.*, CDate([日期] & " " & nz(DMax("时间","行政部","姓名='" & [姓名] & "' and 日期=#" & [日期] & "# and 时间<'" & [时间] & "'"),[时间])) AS Time1, CDate([日期] & " " & [时间]) AS Time2, DateDiff("n",Time1,Time2) AS 时间差
FROM 行政部
ORDER BY 姓名, 日期, 时间;

2、同日查询
SELECT 行政部.姓名, 行政部.日期
FROM 行政部
GROUP BY 行政部.姓名, 行政部.日期;

二、写两个自定义子程序

Sub Ergodic()
    Dim rs As New ADODB.Recordset
    Dim ssql As String
    Dim i As Long
   
    ssql = "select * from 同日查询"
    rs.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    For i = 1 To rs.RecordCount
        Call delRe(rs!姓名.Value, rs!日期.Value)
        rs.MoveNext
    Next
    rs.Close: Set rs = Nothing
End Sub

Sub delRe(ByVal name As String, ByVal d As Date)
    Dim rs As New ADODB.Recordset
    Dim ssql As String
    Dim i As Long
    Dim x1 As Long, x2 As Long
   
    ssql = "select * from 行政查询 where 姓名='" & name & "' and 日期=#" & d & "#"
    rs.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    For i = 1 To rs.RecordCount
        x1 = rs!时间差.Value
        If x1 <= 15 Then
            x1 = rs!时间差.Value
            rs.MoveNext
            If rs.EOF = False Then
                x2 = rs!时间差.Value
                rs.MovePrevious
                If x2 <= 15 Then
                    rs.Delete
                    rs.Update
                End If
            End If
        End If
        If rs.EOF Then Exit For
        rs.MoveNext
    Next
   
    rs.Close: Set rs = Nothing
End Sub

三、调用子程序

Me.子窗体.Requery





殷小宝 发表于:2013-05-24 22:13:20
煮江品茶老师做的是同一姓名同一天的相邻时间相差15分钟,而不是最后时间与最初时间相比。如果某人同一天记录相邻时间差分别为6分、1分、3分、4分、2分、8分,前4次总时间相差14分钟,应用时间差4分的记录,如果按照煮江老师的方法,是时间差8分的那条记录了。楼主问的是同一天内相差15分内,而不是与上次记录相差15分钟。

煮江品茶 发表于:2013-05-25 09:52:13
菜鸟 发表于:2013-05-25 10:20:10

只是删除一部份,有部份还是删除不了。老师,能不能合条件的完全删除它呢,如:

子窗体
部门 编号 卡号 姓名 日期 时间 时间差
行政部 0130 0108 梁中 2012-10-4 17:27:26 540
行政部 0130 0108 梁中 2012-10-4 17:28:44 1



煮江品茶 发表于:2013-05-25 11:12:02

把delRe子程序中的If x1 <= 15 Then和对应的end if两条语句注销即可。

 

......

For i = 1 To rs.RecordCount
        x1 = rs!时间差.Value
        'If x1 <= 15 Then    注销
            x1 = rs!时间差.Value
            rs.MoveNext
            If rs.EOF = False Then
                x2 = rs!时间差.Value
                rs.MovePrevious
                If x2 <= 15 Then
                    rs.Delete
                    rs.Update
                End If
            End If
        'End If    注销
        If rs.EOF Then Exit For
        rs.MoveNext

Next

.......



总记录:7篇  页次:1/1 9 1 :