以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  生成小数位数不对  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=136903)

--  作者:aza520
--  发布时间:2019/6/24 9:44:00
--  生成小数位数不对
设代码如下:
b.Totals.AddExp("业主青苗补助费","Round(青苗数量 * 业主青苗补偿标准 * 0.85,2)")

"业主青苗补助费"列设为双精度小数

请问老师,为什么生成的数据只有一位小数

--  作者:aza520
--  发布时间:2019/6/24 9:58:00
--  
比如实际数值为1718119.35,而只显示为1718119.4
--  作者:aza520
--  发布时间:2019/6/24 10:12:00
--  
但是当实际数值为101.02时,又可以显示正确的101.02数值。请问老师是什么问题
--  作者:有点甜
--  发布时间:2019/6/24 11:39:00
--  

试试

 

https://www.cnblogs.com/qianjinyan/p/9636544.html

 


--  作者:aza520
--  发布时间:2019/6/24 16:04:00
--  

以下分组统计
b.Totals.AddExp("业主青苗补助费","Round(青苗数量 * 业主青苗补偿标准 * 0.85,2)")

为什么不能替换成如下:
b.Totals.AddExp("业主青苗补助费","Convert([青苗数量] *[业主青苗补偿标准] * 0.85*100, \'System.Int64\')/100")



--  作者:有点甜
--  发布时间:2019/6/24 16:12:00
--  

1、round函数,只是四舍五入,并不会固定保留多少位小数;

 

2、如果你需要显示固定小数,设置格式 http://www.foxtable.com/webhelp/topics/1659.htm

 


--  作者:aza520
--  发布时间:2019/6/24 17:24:00
--  
原来分项计算表达式的“业主青苗补助费”列的公式是:Convert([青苗数量] *[业主青苗补偿标准] * 0.85*100, \'System.Int64\')/100

分组统计是按照
b.Totals.AddExp("业主青苗补助费","Round(青苗数量 * 业主青苗补偿标准 * 0.85,2)")

所以最后分项累加的数值跟分组统计出来的数值会有上些偏差,如分项累加的数值是1718119.35,而分组统计出的数值则是17119.40。请问老师该如何解决

--  作者:aza520
--  发布时间:2019/6/24 17:49:00
--  
就是希望能在分组统计中按照已经设定的每一个分项的值进行累加统计,这样应该可以避免偏差,该如何实现
--  作者:有点甜
--  发布时间:2019/6/24 18:11:00
--  

你foxtable里面的公式,试试改成

 

Convert([青苗数量] *[业主青苗补偿标准] * 0.85*100 + 0.01, \'System.Int64\')/100

 

具体做一个实例发上来测试


--  作者:aza520
--  发布时间:2019/6/25 11:12:00
--  
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:征地明细表.xlsx

老师,做了个例子。在例子的支付结算窗口点击计算按钮可以分组统计。电子表格中细目累计是1718119.35,例子中的分组统计是1718119.36
例子中的计算代码是从我目前系统中的以下代码简化来的,系统中的代码如下,代码中的”业主青苗补助费“就是例子中的合计,我系统中的分组统计则是1718119.4

Syscmd.Project.Save()

 

Dim b As New SQLGroupTableBuilder("征地统计表","S征地明细")

b.ConnectionName = "zcxt"

b.Groups.AddDef("项目名称") \'根据产品分组

b.Groups.AddDef("县区") \'根据产品分组

b.Groups.AddDef("第几期结算") \'根据产品分组

b.Totals.AddDef("征地数量") \'对数量进行统计

b.Totals.AddExp("政府征地补偿金额","Round(征地数量 * 政府征地补偿标准,2)")

b.Totals.AddExp("业主征地补助金额","Round(征地数量 * 业主征地补偿标准 * 0.85,2)")

b.Totals.AddExp("政府青苗补偿金额","Round(青苗数量 * 政府青苗补偿标准,2)")

b.Totals.AddExp("业主青苗补助费","Round(青苗数量 * 业主青苗补偿标准 * 0.85,2)")

b.Build \'生成统计表

\'MainTable = Tables("征地统计表") \'打开生成的统计表

 

DataTables("S征地计量统计表").DataRows.Clear

 

 

Dim Cols1() As String = {"项目名称","县区","第几期结算","征地数量","政府征地补偿金额","业主征地补助金额","政府青苗补偿金额","业主青苗补助费"}\'指定数据来源列

Dim Cols2() As String = {"项目名称","县区","第几期结算","本期结算征地数量","本期政府征地补偿金额合计","本期业主征地补助金额合计","本期政府青苗补偿费金额合计","本期业主青苗补助金额合计"}\'指定数据接收表

 

For Each dr1 As DataRow In DataTables("征地统计表").Select("[第几期结算] > 0")

    Dim dr2 As DataRow = DataTables("S征地计量统计表").Find("项目名称 = \'" & dr1("项目名称") & "\' and 县区 = \'" & dr1("县区") & "\' and 第几期结算 = \'" & dr1("第几期结算")  & "\'")

    If dr2 Is Nothing Then

        dr2 = DataTables("S征地计量统计表").AddNew()

    End If

    For i As Integer = 0 To Cols1.Length -1

        dr2(Cols2(i)) = dr1(Cols1(i))

    Next

Next

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目1.zip