Foxtable(狐表)用户栏目专家坐堂 → 表达式计算问题请教老师


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

主题:表达式计算问题请教老师

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


加好友 发短信
等级:四尾狐 帖子:824 积分:6294 威望:0 精华:0 注册:2012/3/1 3:17:00
表达式计算问题请教老师  发帖心情 Post By:2013/1/26 0:31:00 [只看该作者]

上传项目先~~~在表事件DataColChanged中输入以下代码,完成了金额合计列的计算

 

If e.DataCol.Name = "事项1金额" Then '如果更改的是事项1金额列
    If e.DataRow.IsNull("金额合计") Then '金额合计是否为空
        e.DataRow("事项1金额") = Nothing '如果为空,则清除事项1金额
    Else
        e.DataRow("金额合计")=e.DataRow("金额合计")-e.DataRow("事项1金额")
    End If
End If

 

想实现当事项1金额输入后再清除掉"金额合计"列的数值返回原先的数值,也就是重算"金额合计"列内容该怎么修改代码?请教老师

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


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/26 9:28:00 [只看该作者]

 方法一,用最初保存的值减去。

If e.DataCol.Name = "事项1金额" Then '如果更改的是事项1金额列
    If e.DataRow.IsNull("金额合计") Then '金额合计是否为空
        e.DataRow("事项1金额") = Nothing '如果为空,则清除事项1金额
    Else
        e.DataRow("金额合计") = e.DataRow.OriginalValue("金额合计") - e.DataRow("事项1金额")
    End If
End If

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/26 9:30:00 [只看该作者]

 方法二,加多一列表达式列,表达式等于两列相减,那就不用写代码了。因为原先的值,是不可以还原的,因为无从知道原先的值的是多少。

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


加好友 发短信
等级:四尾狐 帖子:824 积分:6294 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2013/1/26 17:39:00 [只看该作者]

第一种代码不行,金额合计输入2000后,事项1金额输入100后,金额合计就变-100数值了

 

方法二可行,但在后面的操作就变麻烦了

 

学生考虑用 e.NewValue  跟  e.OldValue

 

的话代码是不是更加麻烦,要判断很多东西



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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/26 17:44:00 [只看该作者]

 第一种可行,你输入金额列以后,记得保存一下这行或者这个单元格。也就是说,你必须明确你吧这个金额列作为一个定值了,才有所谓的累加累减的操作。

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/26 17:45:00 [只看该作者]

 第二种方法的话,也不会以后处理复杂,这个才是最正确的方法。在原有基础上累减是错误的。

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


加好友 发短信
等级:四尾狐 帖子:824 积分:6294 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2013/1/26 18:15:00 [只看该作者]

最后改成在DataColChanging事件中输入下面的代码,感觉怪怪的,又想不出哪里怪了

 

If e.DataCol.Name = "事项1金额" Then '如果更改的是事项1金额列
    If e.DataRow.IsNull("金额合计") Then '金额合计是否为空

        e.Cancel = True '则取消更改
    Else
        e.DataRow("金额合计")=e.DataRow("金额合计") -e.NewValue + e.OldValue
    End If
End If

[此贴子已经被作者于2013-1-26 18:42:08编辑过]

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


加好友 发短信
等级:四尾狐 帖子:824 积分:6294 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2013/1/26 19:48:00 [只看该作者]

以下是引用lin_hailun在2013-1-26 17:45:00的发言:
 第二种方法的话,也不会以后处理复杂,这个才是最正确的方法。在原有基础上累减是错误的。

学生一直在纠结怪怪的原因,看了林老师说的可能就是这个问题,但变化的金额不单单这一列还有三列需要进行数值输入后进行判断再进行加减,最后再进行piao据套打打印,而piao据打印过程中合

 

计金额是只有一列的,如果进行四列数值判断后再选择哪一列的数值做为最后的合计金额,那样的代码变的很麻烦

 

麻烦林老师帮忙看下学生更改过的代码可行不,或者其它方法可以解决问题


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


加好友 发短信
等级:婴狐 帖子:3 积分:81 威望:0 精华:0 注册:2013/1/27 17:26:00
  发帖心情 Post By:2013/1/27 17:35:00 [只看该作者]

图片点击可在新窗口打开查看图片点击可在新窗口打开查看

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


加好友 发短信
等级:婴狐 帖子:3 积分:81 威望:0 精华:0 注册:2013/1/27 17:26:00
  发帖心情 Post By:2013/1/27 17:36:00 [只看该作者]

新来  初学  代码类的哪儿有更为详细的介绍?

 回到顶部
总数 13 1 2 下一页