Foxtable(狐表)用户栏目专家坐堂 → [求助]为什么在表达式列显示的数据不能及时改变余额数据??


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

主题:[求助]为什么在表达式列显示的数据不能及时改变余额数据??

帅哥哟,离线,有人找我吗?
liuxing73151
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:64 积分:548 威望:0 精华:0 注册:2011/4/18 22:31:00
[求助]为什么在表达式列显示的数据不能及时改变余额数据??  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/4/23 20:49:00 [只看该作者]

你计算了四次余额,自己试试是哪次起了作用。

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


加好友 发短信
等级:婴狐 帖子:64 积分:548 威望:0 精华:0 注册:2011/4/18 22:31:00
  发帖心情 Post By:2011/4/23 21:39:00 [只看该作者]

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


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

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/4/23 23:57:00 [只看该作者]

将项目文件传上来看看。

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


加好友 发短信
等级:婴狐 帖子:64 积分:548 威望:0 精华:0 注册:2011/4/18 22:31:00
  发帖心情 Post By:2011/4/24 9:24:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目.table

就是这个,你看下

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/4/24 9:50:00 [只看该作者]

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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2011/4/24 10:08:00 [只看该作者]

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


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


加好友 发短信
等级:婴狐 帖子:64 积分:548 威望:0 精华:0 注册:2011/4/18 22:31:00
  发帖心情 Post By:2011/4/24 10:20:00 [只看该作者]

以下是引用czy在2011-4-24 9:50:00的发言:

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

 

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

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


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


加好友 发短信
等级:小狐 帖子:382 积分:3007 威望:0 精华:0 注册:2012/8/30 16:09:00
  发帖心情 Post By:2012/9/28 8:42:00 [只看该作者]

在哪个地方添加此代码?图片点击可在新窗口打开查看

 回到顶部