以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  增加行出错  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=146282)

--  作者:mojo
--  发布时间:2020/2/20 16:41:00
--  增加行出错

子表BeforeAddDataRow限定了增加行的行数

Dim r As Row = Tables("申请单明细").Current
If r IsNot Nothing Then
    If DataTables("申请单明细").Compute("Count(付款申请单编号)","付款申请单编号 = \'" & r("付款申请单编号") & "\'") >= 5 Then
        e.Cancel = True
        msgbox("明细行数已满,请新增一张凭证")
    End If

满五行后主表DataColChanged有条件增加行代码出错,

调用的目标发生了异常。
未将对象引用设置到对象的实例。

 

Select Case e.DataCol.name
    Case "付款申请编号"
        Dim dr As DataRow = DataTables("申请单明细").Find("付款申请单编号 = \'" & e.OldValue & "\'")
        Dim dt As DataRow = DataTables("税费").Find("付款申请单编号 = \'" & e.OldValue & "\'")
              If dr Is Nothing And dt Is Nothing Then
            dr = DataTables("申请单明细").AddNew()
            dt = DataTables("税费").AddNew()
            dr("付款申请单编号") = e.DataRow("付款申请编号")
            dr("申请日期") = e.DataRow("申请日期")
            dr("申请部门") = e.DataRow("申请部门")
            dt("付款申请单编号") = e.DataRow("付款申请编号")
            dt("申请日期") = e.DataRow("申请日期")
            dt("申请部门") = e.DataRow("申请部门")
        Else
            dr("付款申请单编号") = e.DataRow("付款申请编号")
            dt("付款申请单编号") = e.DataRow("付款申请编号")
        End If
    Case "申请日期","申请部门"
        Dim dr As DataRow = DataTables("申请单明细").Find("付款申请单编号 = \'" & e.DataRow("付款申请编号") & "\'")
        Dim dt As DataRow = DataTables("税费").Find("付款申请单编号 = \'" & e.DataRow("付款申请编号") & "\'")
        If dr IsNot Nothing And dt IsNot Nothing  Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
            dt(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select

 

请帮忙看看。

[此贴子已经被作者于2020/2/20 16:44:53编辑过]

--  作者:有点蓝
--  发布时间:2020/2/20 16:51:00
--  
DataColChanged里使用类似的代码判断一下行数,再决定是否添加