Foxtable(狐表)用户栏目专家坐堂 → 关于DataColChanged的问题


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

主题:关于DataColChanged的问题

美女呀,离线,留言给我吧!
2327153574
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:20 积分:226 威望:0 精华:0 注册:2015/1/20 11:15:00
关于DataColChanged的问题  发帖心情 Post By:2019/8/27 17:02:00 [只看该作者]

想实现以下功能:新增合同后,同时在租金明细表、租金应缴明细表、租金实缴明细表、保证金信息表中增加相应的行,在合同信息表的DataColChanged事件中加入以下代码:
Select Case e.DataCol.Name
    Case "合同编号"
        If e.DataRow.IsNull("合同编号") = False Then '如果已经输入合同编号
            Dim pr1 As List(Of DataRow)  = DataTables("租金明细表").Select("[合同编号] = '" & e.DataRow("合同编号") & "'")
            Dim pr2 As List(Of DataRow)  = DataTables("租金应缴明细表").Select("[合同编号] = '" & e.DataRow("合同编号") & "'")
            Dim pr3 As List(Of DataRow)  = DataTables("租金实缴明细表").Select("[合同编号] = '" & e.DataRow("合同编号") & "'")
            Dim pr4 As List(Of DataRow)  = DataTables("保证金信息表").Select("[合同编号] = '" & e.DataRow("合同编号") & "'")           
            If pr1.Count = 0 Then '而且无租金明细
                Dim dr1 As DataRow = DataTables("租金明细表").AddNew()
                dr1("合同编号") = e.DataRow("合同编号")
            End If
            If pr2.Count = 0 Then '而且无租金应缴明细
                Dim dr2 As DataRow = DataTables("租金应缴明细表").AddNew()
                dr2("合同编号") = e.DataRow("合同编号")
            End If
            If pr3.Count = 0 Then '而且无租金实缴明细
                Dim dr3 As DataRow = DataTables("租金实缴明细表").AddNew()
                dr3("合同编号") = e.DataRow("合同编号")
            End If
            If pr4.Count = 0 Then '而且无保证金明细
                Dim dr4 As DataRow = DataTables("保证金信息表").AddNew()
                dr4("合同编号") = e.DataRow("合同编号")
            End If
        End If
End Select


报错内容如下:
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2019.7.8.1
错误所在事件:表,租金明细表,DataColChanged
详细错误信息:
调用的目标发生了异常。
未将对象引用设置到对象的实例。
 。。。。。。

同时增加行的租金明细表、租金应缴明细表、租金实缴明细表、保证金信息表的都报错,请问是什么原因?

[此贴子已经被作者于2019/8/27 17:02:48编辑过]

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


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/27 17:05:00 [只看该作者]

和这段代码没有关系。

错误所在事件:表,租金明细表,DataColChanged

 回到顶部
美女呀,离线,留言给我吧!
2327153574
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:20 积分:226 威望:0 精华:0 注册:2015/1/20 11:15:00
  发帖心情 Post By:2019/8/27 17:10:00 [只看该作者]

租金明细表、保证金信息表中,DataColChanged 中只有以下代码:

If e.DataCol.name = "审核" Then
    Dim pr As DataRow = e.DataRow.GetParentRow("合同信息表")
    If e.DataRow("审核") = False Then
        pr("审核") = False
    End If
End If

租金应缴明细表,DataColChanged 中有以下代码:
'-----------------------------------------自动生成缴费号-------------------------------------------
Dim bh As String = e.DataRow("合同编号") & "_"  '生成编号的前半部分
If e.DataRow.RowState = DataRowState.Added Then
    If e.DataRow("缴费号").StartsWith(bh) = False '如果编号的前半部分不符
        Dim max As String
        Dim idx As Integer
        Dim bit As Integer
        max = e.DataTable.Compute("Max(缴费号)","[缴费号] like '" & bh & "*'") '取得该合同的最大编号
        bit = bh.Length
        If max > "" Then '如果存在最大编号
            idx = CInt(max.Substring(bit,2)) + 1 '获得最大编号的后两位顺序号,并加1
        Else
            idx = 1 '否则顺序号等于1
        End If
        e.DataRow("缴费号") = bh & Format(idx,"00")
    End If
End If
'-----------------------------------------自动生成缴费号-------------------------------------------
If e.DataCol.Name = "实缴金额" Then
    e.DataRow("实缴金额") = DataTables("租金实缴明细表").Compute("Sum(实缴金额)","[缴费号] = '" & e.DataRow("缴费号") & "'")
End If

Select Case e.DataCol.name
    Case "欠缴金额"
        If e.DataRow.IsNull("应缴金额")=False AndAlso e.DataRow.IsNull("实缴金额")=False Then
            e.DataRow("欠缴金额")= e.DataRow("应缴金额") - e.DataRow("实缴金额")
        End If
End Select
'当我们在实缴明细表输入实缴金额时,应缴明细表/合同信息表的数据会自动更新
Select Case e.DataCol.name
    Case "截止日期","应缴金额"
       
        Dim pr2 As DataRow = e.DataRow.GetParentRow("合同信息表")
       
        DataTables("合同信息表").DataCols("合同金额_已缴金额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("合同金额_欠缴金额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("合同金额_未缴金额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("往年_应缴金额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("往年_实缴金额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("往年_欠缴金额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("本年度_应缴金额_按合同").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("本年度_应缴金额_含往年欠缴金额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("本年度_实缴金额_按合同").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("本年度_实缴金额_补往年欠缴金额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("本年度_实缴金额_总额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("本年度_欠缴金额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("本年度_未缴金额").RaiseDataColChanged(pr2)
End Select
If e.DataCol.name = "审核" Then
    Dim pr As DataRow = e.DataRow.GetParentRow("合同信息表")
    If e.DataRow("审核") = False Then
        pr("审核") = False
    End If
End If


租金实缴明细表,DataColChanged 中有以下代码:
'当我们在实缴明细表输入实缴金额时,应缴明细表/合同信息表的数据会自动更新
If e.DataCol.name = "实缴金额" Then
    Dim pr1 As DataRow = e.DataRow.GetParentRow("租金应缴明细表") '找出对应的父行
    Dim pr2 As DataRow = e.DataRow.GetParentRow("合同信息表")
        DataTables("租金应缴明细表").DataCols("实缴金额").RaiseDataColChanged(pr1)
        DataTables("租金应缴明细表").DataCols("欠缴金额").RaiseDataColChanged(pr1)
        DataTables("合同信息表").DataCols("合同金额_已缴金额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("合同金额_欠缴金额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("合同金额_未缴金额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("往年_应缴金额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("往年_实缴金额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("往年_欠缴金额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("本年度_应缴金额_按合同").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("本年度_应缴金额_含往年欠缴金额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("本年度_实缴金额_按合同").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("本年度_实缴金额_补往年欠缴金额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("本年度_实缴金额_总额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("本年度_欠缴金额").RaiseDataColChanged(pr2)
        DataTables("合同信息表").DataCols("本年度_未缴金额").RaiseDataColChanged(pr2)
End If



请问是什么问题
[此贴子已经被作者于2019/8/27 17:35:05编辑过]

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


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/27 17:39:00 [只看该作者]

If e.DataCol.name = "审核" Then
    Dim pr As DataRow = e.DataRow.GetParentRow("合同信息表")
if pr isnot nothing then
    If e.DataRow("审核") = False Then
        pr("审核") = False
    End If
end if
End If

 回到顶部