以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]同类行相邻行对比标记(已解决)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=67319)

--  作者:yyzlxc
--  发布时间:2015/4/22 10:47:00
--  [求助]同类行相邻行对比标记(已解决)
要求对同类行(员工编号相同)按日期时间顺序的相邻行,对设备编号进行比较,设备编号相同的,时间大的行标记为1,否则标记为0。下面这段代码,不能达到此效果,如何修改代码实现上述效果,请各位老师指教,谢谢!!

Tables("表B").Sort = "员工编号,日期时间"
Dim ygbhs As List(Of String) = DataTables("表B").GetValues("员工编号")
Dim sbbhs As List(Of String) = DataTables("表B").GetValues("设备编号")
For Each ygbh As String In ygbhs
    For Each sbbh As String In sbbhs
        Dim drs As List(Of DataRow) = DataTables("表B").Select("[员工编号] = \'" & ygbh &"\' And [设备编号] = \'" & sbbh &"\'","日期时间")
        For n As Integer = 0 To drs.Count - 1 \'遍历所有行
            If n > 0 AndAlso drs(n)("日期时间") > drs(n-1)("日期时间") AndAlso drs(n)("设备编号") = drs(n-1)("设备编号") Then
                drs(n)("标记") = 1
            Else
                drs(n)("标记") = 0
            End If
        Next
    Next
Next
Tables("表B").AutoSizeCols()


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


[此贴子已经被作者于2015/4/22 14:16:07编辑过]

--  作者:Bin
--  发布时间:2015/4/22 10:52:00
--  
按日期时间顺序的相邻行? 没看明白
--  作者:yyzlxc
--  发布时间:2015/4/22 11:01:00
--  
谢谢Bin老师的回复,就是按日期时间列的顺序,达到效果列的要求。请老师指教,谢谢!!
--  作者:Bin
--  发布时间:2015/4/22 11:03:00
--  
例如有3个B25  按照时间排序把 后面两个标记为1?
--  作者:yyzlxc
--  发布时间:2015/4/22 11:05:00
--  
而且相同的设备编号,后面两行标记为1.
--  作者:Bin
--  发布时间:2015/4/22 11:22:00
--  
u pdate {表B} set 标记=1 where [_Identify] not in (select [_Identify] f rom {表B} a inner join  (Select 员工编号,设备编号,min(日期时间) As 日期时间 F rom {表B} Group By 员工编号,设备编号) b on a.日期时间= b.日期时间 and a.员工编号=b.员工编号 and a.设备编号=b.设备编号)
--  作者:yyzlxc
--  发布时间:2015/4/22 12:30:00
--  
代码有误,修改后运行通过,但是不符要求。要求是,以员工编号为组,日期时间为序,如相邻两行设备代码相同,时间大的行标记为1。


--  作者:yyzlxc
--  发布时间:2015/4/22 12:32:00
--  



图片点击可在新窗口打开查看此主题相关图片如下:捕获.jpg
图片点击可在新窗口打开查看


--  作者:逛逛
--  发布时间:2015/4/22 12:43:00
--  
\'Tables("表B").Sort =  "员工编号,日期时间,设备编号"
Dim drs As List(Of DataRow) = DataTables("表B").Select("","员工编号,日期时间,设备编号")
Dim dr As DataRow
Dim dr1 As DataRow = drs(drs.Count - 1)
For i  As Integer = drs.Count - 2 To 0 Step -1
    dr = drs(i)
   
    If dr("员工编号") = dr1("员工编号") AndAlso dr("设备编号") = dr1("设备编号") Then
        dr1("标记") = 1
    Else
        dr1("标记") = 0
    End If
    dr1 = dr
Next
--  作者:yyzlxc
--  发布时间:2015/4/22 13:27:00
--  
谢谢逛逛老师的指教,达到预期效果,存在一点瑕疵,好像第一行不能填充标记,能否解决。再次感谢逛逛老师!!