以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  计算代码问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=87325)

--  作者:feixianzhi
--  发布时间:2016/7/8 10:43:00
--  计算代码问题
Dim Ar As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "合同进价","标价","扣率","补差单价"
        If Ar.IsNull("合同进价") OrElse Ar.IsNull("标价")  OrElse Ar.IsNull("扣率")  Then
            Ar("补差单价") = Nothing
        Else
            Ar("补差单价") = Ar("合同进价") -Ar("标价") * Ar("扣率")
            
        End If
End Select


这段代码我用来求补差单价。代码没问题,但我想,计算出来的结果,有的需要人为改动。我在补差单价列输入改动的值后,还是变成代码计算的值。哪位大师能帮帮忙。

--  作者:大红袍
--  发布时间:2016/7/8 10:51:00
--  
Dim Ar As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "合同进价","标价","扣率"
        If Ar.IsNull("合同进价") OrElse Ar.IsNull("标价")  OrElse Ar.IsNull("扣率")  Then
            Ar("补差单价") = Nothing
        Else
            Ar("补差单价") = Ar("合同进价") -Ar("标价") * Ar("扣率")
            
        End If
End Select

--  作者:feixianzhi
--  发布时间:2016/7/8 11:05:00
--  
谢谢大红袍老师。
--  作者:feixianzhi
--  发布时间:2016/7/8 11:10:00
--  
大红袍老师,代码怎么改,能实现:一是补差单价实现四舍五入到小数点后两位。二是补差单价负值的自动成零。谢谢大红袍老师。
--  作者:大红袍
--  发布时间:2016/7/8 11:18:00
--  

dim n As Double = Ar("合同进价") -Ar("标价") * Ar("扣率")

Ar("补差单价") = iif(n < 0, 0, Format(n, "0.00"))


--  作者:feixianzhi
--  发布时间:2016/7/8 12:12:00
--  
谢谢大红袍老师,辛苦了。
--  作者:feixianzhi
--  发布时间:2016/7/8 12:18:00
--  
\'以下代码计算补差单价
Dim Ar As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "合同进价","标价","扣率"
        If Ar.IsNull("合同进价") OrElse Ar.IsNull("标价")  OrElse Ar.IsNull("扣率")  Then
            Ar("补差单价") = Nothing
        Else
            Ar("补差单价") = Ar("合同进价") -Ar("标价") * Ar("扣率")
            
        End If
End Select

\'以下代码,如果补差单价为负则为零,并小数点后3位
Dim n As Double = Ar("合同进价") -Ar("标价") * Ar("扣率")
Ar("补差单价") = iif(n < 0, 0, Format(n, "0.000"))




大红袍老师,我的代码改完是这样。但补差单价又变成只能计算,而不能人为改动了。怎么办呢。

--  作者:大红袍
--  发布时间:2016/7/8 12:20:00
--  
Dim Ar As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "合同进价","标价","扣率"
        If Ar.IsNull("合同进价") OrElse Ar.IsNull("标价")  OrElse Ar.IsNull("扣率")  Then
            Ar("补差单价") = Nothing
        Else
Dim n As Double = Ar("合同进价") -Ar("标价") * Ar("扣率")
Ar("补差单价") = iif(n < 0, 0, Format(n, "0.000"))
        End If
End Select
 

--  作者:feixianzhi
--  发布时间:2016/7/8 12:24:00
--  
谢谢大红袍老师。