以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  子表最后一行数据  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=96071)

--  作者:txtxtttt1919
--  发布时间:2017/2/12 14:29:00
--  子表最后一行数据
”报告流水“为”报告台账“子表,我在datarowdeleting事件中写的以下代码:
Dim dr As DataRow = e.DataRow.getparentrow("报告台账")
If dr.getchildrows("报告流水").count = 1 Then
      dr("处理情况") = Nothing
Else
      Dim pr As DataRow = DataTables("报告流水").datarows(dr.getchildrows("报告流水").count - 1)
     dr("处理情况") = pr("处理")
End If

预想效果:如果”报告流水“中删除的行是”报告台账“在子表中的唯一一行,那么”处理情况“一栏为空。
           否则”处理情况“一栏中写入”报告流水“最后一行”处理“列的数据。

但运行的结果我自己都看不懂,求教。

另问:count 是 最后一行,还是   count - 1是最后一行

--  作者:wyz20130512
--  发布时间:2017/2/12 15:24:00
--  

Count是总的行数,首行是从0开始的,Count - 1 是末行的位置。
[此贴子已经被作者于2017/2/12 15:25:46编辑过]

--  作者:有点色
--  发布时间:2017/2/12 15:53:00
--  
Dim dr As DataRow = e.DataRow.getparentrow("报告台账")
Dim drs As List(Of DataRow) = dr.getchildrows("报告流水")
Dim str As String = Nothing
For i As Integer = drs.count-1 To 0 Step -1
    If drs(i)("_Identify") <> e.DataRow("_Identify") Then
        str = drs(i)("处理")
        Exit For
    End If
Next
dr("处理情况") = str

--  作者:txtxtttt1919
--  发布时间:2017/2/13 9:24:00
--  
代码很好用,谢谢,但为什么要这么写,我写那个的问题是什么?
--  作者:有点色
--  发布时间:2017/2/13 9:27:00
--  
以下是引用txtxtttt1919在2017/2/13 9:24:00的发言:
代码很好用,谢谢,但为什么要这么写,我写那个的问题是什么?

 

因为当前行没有删除,不知道最后一行是哪一个,因为有可能是当前行,也可能是最大的那一行。

 

所以要从后面开始循环,判断哪个是最后一行。


--  作者:txtxtttt1919
--  发布时间:2017/2/13 19:41:00
--  
哦,谢谢主