以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 关于DataColChanged的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=140015) |
-- 作者:2327153574 -- 发布时间:2019/8/27 17:02:00 -- 关于DataColChanged的问题 想实现以下功能:新增合同后,同时在租金明细表、租金应缴明细表、租金实缴明细表、保证金信息表中增加相应的行,在合同信息表的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编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/8/27 17:05:00 -- 和这段代码没有关系。 错误所在事件:表,租金明细表,DataColChanged
|
-- 作者:2327153574 -- 发布时间: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编辑过]
|
-- 作者:有点蓝 -- 发布时间: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 |