以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  写代码时没问题,运行也买有问题,从新运行时出问题,请专家诊断。  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=10903)

--  作者:zxyds2000
--  发布时间:2011/6/29 9:31:00
--  写代码时没问题,运行也买有问题,从新运行时出问题,请专家诊断。

我在表“经营11年管控表”的BeforeSelChange事件添加了如下代码:

 

Dim Sum0 As Decimal

Dim Sum1 As Decimal

Dim Sum2 As Decimal

Dim Sum3 As Decimal

Dim Sum4 As Decimal

Dim Sum5 As Decimal

Dim Sum6 As Decimal

 

    Dim bh As Integer

    bh = CurrentTable.Current("编号")

    Sum0 = Tables("财务数据录入").Compute("Sum(金额)", "[编号] = \'"& bh &"\' And [业务内容] = \'开收据\'")

    If Sum0<>0 Then

        CurrentTable.Current("开收据额") = Sum0

    Else

        CurrentTable.Current("开收据额") = Nothing

    End If

 

Sum1 = Tables("财务数据录入").Compute("Sum(金额)", "[编号] = \'"& bh &"\' And [业务内容] = \'开发票\'")

    If Sum1<>0 Then

        CurrentTable.Current("已开票额") = Sum1

    Else

        CurrentTable.Current("已开票额") = Nothing

    End If

       

Sum2 = Tables("财务数据录入").Compute("Sum(金额)", "[编号] = \'"& bh &"\' And [业务内容] = \'收预付款\'")

    If Sum2<>0 Then

        CurrentTable.Current("预付款") = Sum2

    Else

        CurrentTable.Current("预付款") = Nothing

End If

 

Sum3 = Tables("财务数据录入").Compute("Sum(金额)", "[编号] = \'"& bh &"\' And [业务内容] = \'收二期款\'")

    If Sum3<>0 Then

        CurrentTable.Current("二期款") = Sum3

    Else

        CurrentTable.Current("二期款") = Nothing

    End If

 

Sum4 = Tables("财务数据录入").Compute("Sum(金额)", "[编号] = \'"& bh &"\' And [业务内容] = \'收结算款\'")

Sum5 = Tables("财务数据录入").Compute("Sum(金额)", "[编号] = \'"& bh &"\' And [业务内容] = \'收保留款\'")

 

Sum6 = Sum2 + Sum3 + Sum4 + Sum5

    If Sum6<>0 Then

        CurrentTable.Current("累计收款") = Sum6

    Else

        CurrentTable.Current("累计收款") = Nothing

End If

 

写代码时没问题,运行也没有问题,从新运行时出问题,错误提示如下:

 

错误代码位置:经营11年管控表,BeforeSelChange


 

System.NullReferenceException:Object reference not set to an instance of an object.at UserCode.BeforeSelChange(CellRangeChangeEventArgs e)

 

请专家帮助解决。

 

请专家诊断。


--  作者:程兴刚
--  发布时间:2011/6/29 9:42:00
--  

Nothing全部改为0


--  作者:程兴刚
--  发布时间:2011/6/29 9:47:00
--  

另外,看看您的编号列是不是数值型:

如果是, "[编号] = \'"& bh &"\' And 改为 "[编号] = " & bh & "And

如果不是: Dim bh As Integer改为Dim bh As String

晕,昨天忘记写连接符号了,更正!

[此贴子已经被作者于2011-6-29 18:14:52编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/6/29 11:02:00
--  

首先将代码中的CurrentTable全部改为e.Table

 

 

然后在开始位置增加一行代码:

 

 

If e.Table.Current Is Nothing Then

    return

End if


--  作者:zxyds2000
--  发布时间:2011/6/29 11:04:00
--  

编号是整性数据,改为: [编号] = bh  And  后系统不认。

Nothing 改为 0 可能不行,Nothing 是没有数据,可能还没有填写, 0  则会认为此项数据为0 ,统计时有问题。


--  作者:程兴刚
--  发布时间:2011/6/29 11:51:00
--  

呵呵,我都没注意e参数,晕!


--  作者:zxyds2000
--  发布时间:2011/6/29 11:59:00
--  

狐狸爸爸:

    问题没解决,按照你的办法改过后,在添加代码时可以很好的执行,退出后重新进入时, 程序会中止启动,直接退出了。

    按ctrl键可以进入程序,但是一切换表视图就出错。


--  作者:狐狸爸爸
--  发布时间:2011/6/29 12:20:00
--  

将设置好代码的表传上来,告诉我怎样操作出错。

 


--  作者:zxyds2000
--  发布时间:2011/6/29 12:42:00
--  

 狐狸爸爸:

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:财务数据录入试验_0629.zip

密码在你的收件箱。


--  作者:czy
--  发布时间:2011/6/29 13:29:00
--  
如果编号是整数型数据,bh前后就不应该有引号。