以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 子表最后一行数据 (http://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 -- 哦,谢谢主 |