以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]为什么在表达式列显示的数据不能及时改变余额数据??  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=9571)

--  作者:liuxing73151
--  发布时间:2011/4/23 19:51:00
--  [求助]为什么在表达式列显示的数据不能及时改变余额数据??

Select Case e.DataCol.Name
    Case "客户名称","收款","合计"
        Dim dr As DataRow
        Dim mr As DataRow = e.DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [客户名称] = \'" & mr("客户名称") & "\'", "[_SortKey] Desc")
        If dr Is Nothing Then
            mr("余额") = mr("收款") - mr("合计")
            dr = mr
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [客户名称] = \'" & dr("客户名称") & "\'", "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1
            drs(i)("余额") = drs(i-1)("余额") + drs(i)("收款") - drs(i)("合计")
        Next
        If e.DataCol.Name = "客户名称" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [客户名称] = \'" & e.OldValue & "\'", "[_SortKey] Desc")
            If dr Is Nothing Then
                dr = e.DataTable.Find("[客户名称] = \'" & e.OldValue & "\'", "[_SortKey]")
                If dr IsNot Nothing Then
                    dr("余额") = dr("收款") - dr("合计")
                End If
            End If
            If dr IsNot Nothing Then
                drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [客户名称] = \'" & dr("客户名称") & "\'", "[_SortKey]")
                For i As Integer = 1 To drs.Count - 1
                    drs(i)("余额") = drs(i-1)("余额") + drs(i)("收款") - drs(i)("合计")
                Next
            End If
        End If
End Select

 

 

这个是我表的代码,

当我表里填入客户名称时,余额会自动出来,但是后面填入数量和单价,合计是表达式列(数量*单价),里面算出的数字不能及时更改后面的余额(收款-合计) 

我另外一个表的出入库统计直接填入的数字却可以及时改变余额,这个是什么原因呢??


图片点击可在新窗口打开查看此主题相关图片如下:未命名文件.jpg
图片点击可在新窗口打开查看

 

这个是第一张图:填入客户名称自动出现余额



图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看

 

这个是第二张图:看合计的数值已经出来,但余额都没有变化


--  作者:czy
--  发布时间:2011/4/23 20:49:00
--  
你计算了四次余额,自己试试是哪次起了作用。
--  作者:liuxing73151
--  发布时间:2011/4/23 21:39:00
--  

不是这个样子的,我如果重置收款列的话,余额会自动更改,主要是合计那一列数值的问题,老是数值计算出来,但余额那边好像识别不出来似的


图片点击可在新窗口打开查看此主题相关图片如下:未命名文件.jpg
图片点击可在新窗口打开查看

--  作者:czy
--  发布时间:2011/4/23 23:57:00
--  
将项目文件传上来看看。
--  作者:liuxing73151
--  发布时间:2011/4/24 9:24:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目.table

就是这个,你看下
--  作者:czy
--  发布时间:2011/4/24 9:50:00
--  

将第二行代码改成这样试试

 

 Case "客户名称","收款","数量","单价"


--  作者:程兴刚
--  发布时间:2011/4/24 10:08:00
--  

因为您判断了名称为合计的列,而合计列是表达式列,表达式列内容改变不触发事件,所以不能计算余额,您最好将合计列改为数据列,通过代码计算来获得结果就应该可以了!


--  作者:liuxing73151
--  发布时间:2011/4/24 10:20:00
--  
以下是引用czy在2011-4-24 9:50:00的发言:

将第二行代码改成这样试试

 

 Case "客户名称","收款","数量","单价"

果然解决了,厉害呀,楼上的我没有去试,不过应该也可以吧


--  作者:地瓜
--  发布时间:2012/9/28 8:42:00
--  
在哪个地方添加此代码?图片点击可在新窗口打开查看