以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]删除时差小于等于60秒的同类行(已解决) (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=67289) |
||||
-- 作者:yyzlxc -- 发布时间:2015/4/21 21:00:00 -- [求助]删除时差小于等于60秒的同类行(已解决) 如何通过代码,实现如下功能:查找编号 = 编号,类别 = 类别,时间 <= 60秒 的行,并删除时间稍大的行(对应表,删除第九行),请各位老师指教,谢谢!!
[此贴子已经被作者于2015/4/22 7:45:57编辑过]
|
||||
-- 作者:游 -- 发布时间:2015/4/21 21:27:00 -- 先用 DataTable.Select 排个序 (编号 , 类别,时间) 然后再遍历两两对比 |
||||
-- 作者:有点甜 -- 发布时间: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 -- 发布时间:2015/4/21 21:53:00 -- 谢谢两位老师的指教,对于时间差小于等于60秒,在条件表达式中如何表述?请老师指教,谢谢! |
||||
-- 作者:狐狸爸爸 -- 发布时间:2015/4/21 22:07:00 -- 修改表结构,出和入在同一行的不同列 |
||||
-- 作者:yyzlxc -- 发布时间:2015/4/21 22:16:00 -- 按照狐爸老师的要求,修改了表结构,下一步如何做,请老师指教,谢谢!! |
||||
-- 作者:狐狸爸爸 -- 发布时间:2015/4/21 22:19:00 -- 再增加一列,算出时差,根据这列设置条件即可 |
||||
-- 作者:yyzlxc -- 发布时间:2015/4/21 22:52:00 -- 狐爸老师,好像不用出入分列,将类别,编号,日期时间排序后,计算出相邻两行的时差,就可以解决问题。但是相邻两行时差的代码如何写,还请老师指教。谢谢!! |
||||
-- 作者:yyzlxc -- 发布时间: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 [此贴子已经被作者于2015/4/21 23:47:24编辑过]
|
||||
-- 作者:yyzlxc -- 发布时间:2015/4/22 7:42:00 -- 问题找到,如下: drs(n)("时差") = (drs(n)("日期时间") - drs(n-1)("日期时间")).TotalSeconds
|