Foxtable(狐表)用户栏目专家坐堂 → [求助]删除时差小于等于60秒的同类行(已解决)


  共有3831人关注过本帖树形打印复制链接

主题:[求助]删除时差小于等于60秒的同类行(已解决)

帅哥哟,离线,有人找我吗?
yyzlxc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]删除时差小于等于60秒的同类行(已解决)  发帖心情 Post By:2015/4/21 21:00:00 [只看该作者]

如何通过代码,实现如下功能:查找编号 = 编号,类别 = 类别,时间 <= 60秒 的行,并删除时间稍大的行(对应表,删除第九行),请各位老师指教,谢谢!!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.foxdb


[此贴子已经被作者于2015/4/22 7:45:57编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:321 积分:1916 威望:0 精华:0 注册:2014/8/24 13:36:00
  发帖心情 Post By:2015/4/21 21:27:00 [只看该作者]

先用 DataTable.Select  排个序 (编号 , 类别,时间

然后再遍历两两对比


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/4/21 21:38:00 [只看该作者]

你可以看看:
http://www.foxtable.com/help/topics/0396.htm

这个Find可以根据制指定条件,按指定顺序找出第一行,找到后你删除就行。

dim dr as datarow = datatables.find("条件表达式","日期 Desc")
if dr isnot nothing then    
     dr.Delete
end if

 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2015/4/21 21:53:00 [只看该作者]

谢谢两位老师的指教,对于时间差小于等于60秒,在条件表达式中如何表述?请老师指教,谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/4/21 22:07:00 [只看该作者]

修改表结构,出和入在同一行的不同列

 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2015/4/21 22:16:00 [只看该作者]

按照狐爸老师的要求,修改了表结构,下一步如何做,请老师指教,谢谢!!


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.foxdb



 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/4/21 22:19:00 [只看该作者]

再增加一列,算出时差,根据这列设置条件即可

 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2015/4/21 22:52:00 [只看该作者]

狐爸老师,好像不用出入分列,将类别,编号,日期时间排序后,计算出相邻两行的时差,就可以解决问题。但是相邻两行时差的代码如何写,还请老师指教。谢谢!!

 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2015/4/21 23:46:00 [只看该作者]

代码计算同类行时差,代码没有出错,但是计算结果均为零,不知问题出在哪里?请各位老师指教,谢谢!!

Tables("表A").Sort = "类别,编号,日期时间"
Dim bhs As List(Of String) = DataTables("表A").GetValues("编号")
Dim lbs As List(Of String) = DataTables("表A").GetValues("类别")
For Each bh As String In bhs
    For Each lb As String In lbs
        Dim drs As List(Of DataRow) = DataTables("表A").Select("[编号] = '" & bh &"' And [类别] = '" & lb &"'","日期时间")
        For n As Integer = 0 To drs.Count - 1 '遍历所有行
            If n > 0 AndAlso drs(n)("日期时间") > drs(n-1)("日期时间") Then
                drs(n)("时差") = (drs(n-1)("日期时间") - drs(n-1)("日期时间")).TotalSeconds
            End If
        Next
    Next
Next

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.foxdb


[此贴子已经被作者于2015/4/21 23:47:24编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2015/4/22 7:42:00 [只看该作者]

问题找到,如下:
drs(n)("时差") = (drs(n)("日期时间") - drs(n-1)("日期时间")).TotalSeconds

 回到顶部