Foxtable(狐表)用户栏目专家坐堂 → 金额分摊余额


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

主题:金额分摊余额

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


加好友 发短信
等级:四尾狐 帖子:918 积分:6587 威望:0 精华:0 注册:2013/8/10 18:33:00
金额分摊余额  发帖心情 Post By:2020/7/8 3:33:00 [只看该作者]

老师,窗口中有NumericComboBox2插件,以及表Table1;
现在想在NumericComboBox2中输入数值后,实现将输入的数值分摊到Table1表中行明细列,
例如分摊金额列为 r("amount"),求出应该分摊比例的公式取行数据和表汇总数据r("tjs") / t.Compute("Sum(tjs)")

执行按钮代码如下:
Dim t As Table = e.form.Controls("Table1").Table
For Each r As Row In t.Rows
    r("amount") = e.Form.Controls("NumericComboBox2").value * r("tjs") / t.Compute("Sum(tjs)")
Next
执行以上代码后,分摊金额计算完毕,但是结果会产生小数,例分摊金额为1000元,可以最的每行合计起来等于1000.01元或999.99元等,明细加起来和总额正负差几分钱范围内。

增加如下代码,想实现将汇总多余的部份加减到窗口表中第一行里面,达到明细加起来等于录入的总金额,代码如下:
Dim r1 As Row = Tables("分配费用_Table1").Rows(0)
 r1("amount")  = 0
 r1("amount")  = e.Form.Controls("NumericComboBox2").value - t.Compute("Sum(amount)")

请问代码为何无效?没关有实现效果

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106160 积分:539917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/8 8:54:00 [只看该作者]

tjs、amount列改为高精度类型列

没有实现效果看看是不是有其他代码影响了

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


加好友 发短信
等级:四尾狐 帖子:918 积分:6587 威望:0 精华:0 注册:2013/8/10 18:33:00
  发帖心情 Post By:2020/7/13 20:45:00 [只看该作者]

谢谢老师,前面是我的小数位太多了,我后面调整了一下可以了。

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


加好友 发短信
等级:幼狐 帖子:109 积分:1735 威望:0 精华:0 注册:2019/10/21 21:57:00
这个怎么取两位小数啊,  发帖心情 Post By:2021/4/20 14:44:00 [只看该作者]

Dim t As Table = e.form.Controls("Table1").Table
For Each r As Row In t.Rows
    r("amount") = e.Form.Controls("NumericComboBox2").value * r("tjs") / t.Compute("Sum(tjs)")
Next
根据你的代码我设置了随机分割金额, DataTables("金额").DataRows.Clear() 
Dim hs As Double= e.Form.Controls("NumericComboBox2").value
Tables("金额").AddNew(hs)
DataTables("金额").DataCols("金额").SetFormat("0.00")
Dim t As Table = e.form.Controls("Table5").Table
For Each r As Row In t.Rows
    r("金额") = e.Form.Controls("NumericComboBox1").value * r("序号") / t.Compute("Sum(序号)")
Next

Dim r1 As Row = Tables("金额").Rows(0)

 r1("金额")  = 0
 r1("金额")  = e.Form.Controls("NumericComboBox1").value - t.Compute("Sum(金额)")
Tables("金额").Cols("金额").GrandTotal = True
Tables("金额").GrandTotal = True
 左边是没有格式的实际四位小数金额,右边是保留格式化的金额,希望除完实际最多就是两位小数的金额该怎么设置呢?

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106160 积分:539917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/20 14:52:00 [只看该作者]

参考:http://www.foxtable.com/webhelp/topics/0361.htm

r1("金额")  = Round2(e.Form.Controls("NumericComboBox1").value - t.Compute("Sum(金额)"),2)

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


加好友 发短信
等级:幼狐 帖子:109 积分:1735 威望:0 精华:0 注册:2019/10/21 21:57:00
  发帖心情 Post By:2021/4/20 15:05:00 [只看该作者]

收到,谢谢了.

 回到顶部