Foxtable(狐表)用户栏目专家坐堂 → 删除行后不会更新汇总数


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

主题:删除行后不会更新汇总数

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


加好友 发短信
等级:一尾狐 帖子:408 积分:3642 威望:0 精华:0 注册:2017/4/8 8:59:00
删除行后不会更新汇总数  发帖心情 Post By:2020/7/8 16:33:00 [只看该作者]

借款单   窗口上部是  借款表 名称为dk_cpd、下部  借款明细 名称:dk_jkb  用cpbm关联

父表借款表单 DataColChanged代码


'以下自动编制批号

If e.DataCol.Name = "dkrq" Then

    If e.DataRow.IsNull("dkrq") Then

        e.DataRow("cpbm") = Nothing

    Else

        Dim d As Date = e.DataRow("dkrq")

        Dim y As Integer = d.Year

        Dim m As Integer = d.Month

        Dim Days As Integer = Date.DaysInMonth(y,m)

        Dim fd As Date = New Date(y,m,1) '获得该月的第一天

        Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天

        Dim bh As String = Format(d,"yyyyMM") '生成编号的前6位,4位年,2位月.

        If e.DataRow("cpbm").StartsWith(bh) = False '如果编号的前6位不符

            Dim max As String

            Dim idx As Integer

            max = e.DataTable.Compute("Max(cpbm)","dkrq >= #" & fd & "# And dkrq <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该月的最大编号

            If max > "" Then '如果存在最大编号

                idx = CInt(max.Substring(7,3)) + 1 '获得最大编号的后三位顺序号,并加1

            Else

                idx = 1 '否则顺序号等于1

            End If

            e.DataRow("cpbm") = bh & "-" & Format(idx,"000")

        End If

    End If

End If

'计算总借款金额计算


If e.DataCol.Name = "cpbm" Then

    Dim Filter As String = "[cpbm] = '" & e.NewValue & "'"

    e.DataRow("fdze") = DataTables("dk_jkb").Compute("Sum(je)", Filter)

End If


子表明细表DataColChanged代码
Select Case e.DataCol.Name
    Case "je"
        Dim pr As DataRow
        pr = DataTables("dk_cpb").Find("cpbm = '" & e.DataRow("cpbm") & "'")
        If pr IsNot Nothing Then
            DataTables("dk_cpb").DataCols("cpbm").RaiseDataColChanged(pr)
        End If
End Select

子表明细表DataRowDeleted代码

Dim pr As DataRow
        pr = DataTables("dk_cpb").Find("cpbm = '" & e.DataRow("cpbm") & "'")
        If pr IsNot Nothing Then
            DataTables("dk_cpb").DataCols("cpbm").RaiseDataColChanged(pr)
        End If


窗口明细删除按钮代码
Dim Result As DialogResult
Result = MessageBox.Show("您确认要删除此条记录吗?删除后将不能恢复", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
    Tables("dk_cpb.dk_jkb").AllowEdit=True
    If Tables("dk_cpb.dk_jkb").rows.count > 0 Then '判断记录是否为空成立
        Tables("dk_cpb.dk_jkb").Current.Locked = False
    Else
        Return
    End If
    Tables("dk_cpb.dk_jkb").Current.Delete
End If
DataTables("dk_jkb").Save()
If Tables("dk_cpb.dk_jkb").rows.count > 0 Then '判断记录是否为空成立
    Tables("dk_cpb.dk_jkb").Current.Locked = True
Else
    Return
End If
Tables("dk_cpb.dk_jkb").AllowEdit=False

出现问题:修改明细后,主表总金额会同步修改,删除明细时,一行或者全部删除完,主表总金额不会变化,有时还出现:此行已从表中移除并且没有任何数据。BeginEdit() 将允许在此行中创建新数据“提示,请老师帮修改代码,谢谢



[此贴子已经被作者于2020/7/8 16:34:54编辑过]

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


加好友 发短信
等级:超级版主 帖子:105877 积分:538442 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/8 16:41:00 [只看该作者]

子表明细表DataRowDeleted代码去掉,DataRowDeleting代码

Dim pr As DataRow
        pr = DataTables("dk_cpb").Find("cpbm = '" & e.DataRow("cpbm") & "'")
        If pr IsNot Nothing Then
e.DataRow("je") = nothing
            DataTables("dk_cpb").DataCols("cpbm").RaiseDataColChanged(pr)
        End If

 回到顶部