以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]计算问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=146812)

--  作者:ntqhj
--  发布时间:2020/3/3 3:10:00
--  [求助]计算问题
老师好!有关计算的问题,希望老师帮我实现。感谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:希望完成计算.table


--  作者:有点蓝
--  发布时间:2020/3/3 10:14:00
--  
Select Case e.DataCol.Name
    Case  "件数"
        If e.DataRow.IsNull("件数") Then 
            e.DataRow("单价") = Nothing  
        End  If
End Select

Select Case e.DataCol.Name
    Case  "件数","单价"
systemready= False
        If e.DataRow.IsNull("件数") OrElse e.DataRow.IsNull("单价")  Then 
            e.DataRow("金额") = Nothing  
        Else
            e.DataRow("金额") = 42 / 186 * e.DataRow("件数") * e.DataRow("单价") 
        End  If
systemready= True
End Select

Select Case e.DataCol.Name
    Case  "件数","金额"
systemready= False
        If e.DataRow.IsNull("件数") OrElse e.DataRow.IsNull("金额") OrElse e.DataRow("件数") = 0 Then 
            e.DataRow("单价") = Nothing  
        Else
            e.DataRow("单价") = e.DataRow("金额") / (42 / 186 * e.DataRow("件数"))
        End  If
systemready= True
End Select

--  作者:ntqhj
--  发布时间:2020/3/3 14:59:00
--  
老师好!实际应用时,附件是作为子表的,父表的重量有时会有调整,子表的重量会随之改变,用老师的代码测试,主表重量变化,副本重量会改变,但单价、金额是不会变,可否帮我加个提示,若重量发生变化,要求重新输入子表的金额或单价
--  作者:有点蓝
--  发布时间:2020/3/3 15:29:00
--  

Select Case e.DataCol.Name
    Case  "件数"
        If e.DataRow.IsNull("件数") Then 
            e.DataRow("单价") = Nothing  
        End  If
MessageBox.Show("重量发生变化,要求重新输入子表的金额或单价!")
End Select

--  作者:ntqhj
--  发布时间:2020/3/5 15:42:00
--  
表达式公式: 装车重量 =  [装车件数] * Parent(接单明细表与承运人明细表).货物重量 / Parent(接单明细表与承运人明细表).件数    。父表名:接单明细表,字段:货物重量、件数;子表名:承运人明细表,字段:装车件数、装车重量。除装车重量,其它都是已知的。这段代码代码老师一定帮忙写下,已开始使用foxtabl写的应用。拜托老师了。


--  作者:有点蓝
--  发布时间:2020/3/5 16:55:00
--  
比如

Select Case e.DataCol.Name
    Case  "件数","单价"
systemready= False
        If e.DataRow.IsNull("件数") OrElse e.DataRow.IsNull("单价")  Then 
            e.DataRow("金额") = Nothing  
        Else
dim dr as datarow  = datatables().find("关联编号=\'" & e.DataRow("关联编号")  & "\'")
if dr is nothing orelse dr("件数") = 0 then
e.DataRow("金额") = Nothing  
else
            e.DataRow("金额") = dr("货物重量") / dr("件数") * e.DataRow("件数") * e.DataRow("单价") 
        End  If
        End  If
systemready= True
End Select

--  作者:ntqhj
--  发布时间:2023/3/7 14:53:00
--  
有计算误差,如何使得某字段参与计算的小数后位数够多,而显示时只显示2位。目前我要设置到小数后5位,计算结果才没有误差
--  作者:有点蓝
--  发布时间:2023/3/7 14:58:00
--  
只能是设置到足够的位数,比如小数后5位
--  作者:ntqhj
--  发布时间:2023/3/7 15:56:00
--  
设置足够的位数可以的,窗口打印时只显示小数后2位该如何设置?
--  作者:有点蓝
--  发布时间:2023/3/7 16:02:00
--  
http://www.foxtable.com/webhelp/topics/1606.htm