以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  SetFormat  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=142694)

--  作者:小笨笨
--  发布时间:2019/11/4 9:36:00
--  SetFormat
DataTables("报关数据_Table1").DataCols.Add("报关单价", Gettype(Double), "[报关金额] / [数量]")
DataTables("报关数据_Table1").DataCols("报关单价").SetFormat("0.00")
DataTables("报关数据_Table1").DataCols.Add("新报关金额", Gettype(Double), "[报关单价] * [数量]")
获取出来的报关单价显示的是2位小数,但是当用报关单价x数量的时候,并不是显示的2位小数x数量得到的值,例如:显示的报关单价是2.22,数量10个,新报关金额是22.15,我想要的报关单价显示的是2.22,新报关金额就是22.20. 
请帮忙看下这个怎么得到?谢谢老师。 


--  作者:有点蓝
--  发布时间:2019/11/4 9:46:00
--  
报关单价是2.22,但是数据库实际的值应该不是2.22,而是2.21xxxx之类的,列属性设置小数位数只是影响界面显示,数据库原来的值是多少还是多少的。而表达式计算还是按照数据库的实际值进行计算的。这才是正确合理的值。

方法1、把报关单价数据库里的值,全部更新为2位小数值
2、新增一个单价列,只存储2位小数值,然后使用这个单价列进行计算

--  作者:小笨笨
--  发布时间:2019/11/4 9:50:00
--  
有点蓝老师:谢谢回复。
  1. 这个报关单价是报关金额/数量得出来的,我不知道怎么更新为2位小数值,我以为setformat就是设置为2位小数值了,您能帮我详细指导下吗?谢谢
 2. 新增一个单价列,只存储2位小数值?怎么做到只存储呢? 您能帮我详细指导下吗?谢谢

--  作者:有点蓝
--  发布时间:2019/11/4 10:13:00
--  
1、如果是表达式列,参考:http://www.foxtable.com/webhelp/topics/0108.htm
如果是使用代码计算的,参考:http://www.foxtable.com/webhelp/topics/0281.htm

2、参考上面的帮助,把数据处理后再写入单价列

--  作者:小笨笨
--  发布时间:2019/11/4 11:47:00
--  
Dim b As New GroupTableBuilder("统计表1",DataTables("出运表明细"))
b.Filter = Tables("出运表明细").Filter
b.Groups.AddDef("运编号")
b.Groups.AddDef("出运运编号")
b.Groups.adddef("英文品名")
b.Groups.AddDef("报关品名")
b.Totals.AddDef("数量")
b.Groups.AddDef("数量单位")
b.Totals.AddDef("箱数")
b.Groups.AddDef("箱数单位")
b.Totals.adddef("体积")
b.Groups.AddDef("体积单位")
b.Totals.AddDef("毛重")
b.Totals.AddDef("净重")
b.Groups.AddDef("毛重单位")
b.Groups.AddDef("选择")
b.Totals.AddDef("补贴费用")
b.Totals.adddef("销售金额")
b.Totals.adddef("报关金额")
b.Groups.adddef("境内货源地")
b.Groups.Adddef("销售币种")
Tables("报关数据_table1").DataSource = b.BuildDataSource()

DataTables("报关数据_Table1").DataCols.Add("报关单价", Gettype(Double), "[报关金额] / [数量]")
DataTables("报关数据_Table1").DataCols("报关单价").SetFormat("0.00")
DataTables("报关数据_Table1").DataCols.Add("新报关金额", Gettype(Double), "[报关单价] * [数量]")

有点蓝老师,我还是没理解您的意思,可能我没说清楚,您能帮忙详细的解释下吗?

谢谢!

--  作者:有点蓝
--  发布时间:2019/11/4 12:00:00
--  
DataTables("报关数据_Table1").DataCols.Add("报关单价", Gettype(Double), "Convert([报关金额] * [数量] * 100, \'System.Int64\') / 100")


--  作者:小笨笨
--  发布时间:2019/11/4 12:26:00
--  
谢谢有点蓝老师,我之前也是这样写,是一个报错,我以为不行,可是我刚按照你写的再写一遍居然没有报错!图片点击可在新窗口打开查看 真是奇怪了。
再次谢谢老师。