以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]获取累计折旧月数(已解决)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=16087)

--  作者:yyzlxc
--  发布时间:2012/2/2 9:53:00
--  [求助]获取累计折旧月数(已解决)

一段代码,要求计算同一设备编号的累计折旧月数,如果累计折旧月数大于折旧年限月数,当月折旧显示为0。
现在问题是,累计折旧月数 f 显示为0,如何获取正确的累计月数,请各位老师指教,谢谢!!

 

\'当月折旧
Select Case  e.DataCol.Name
    Case "折旧开始"
        Dim dr As DataRow = e.DataRow
        If e.DataRow.IsNull("折旧开始") And  e.DataRow.IsNull("折旧结束") Then
            e.DataRow("当月折旧")=Nothing
        Else
            Dim mydate As Date = Date.Today()
            Dim y As Integer = mydate.Year
            Dim m As Integer = mydate.Month
            Dim a As Date =  New Date(y,m,1) \'月初
            Dim Days As Integer = Date.DaysInMonth(y,m)
            Dim b As Date = New Date(y,m,Days) \'月底
            Dim c As Date = e.DataRow("折旧开始")
            Dim d As Date = e.DataRow("折旧结束")
            Dim f As Byte = DataTables("设备折旧").Compute("Sum(折旧月数)","[设备编号] = \'" & e.NewValue & "\'")
            Dim g As Byte = e.DataRow("折旧年限")
            MessageBox.Show("累计折旧月数:  " & f)
            If c > d OrElse b < c OrElse a > d OrElse f > g*12 Then
                e.DataRow("当月折旧")= 0
            Else
                e.DataRow("当月折旧") = e.DataRow("月折旧费")
            End If
        End If
End Select

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.table

[此贴子已经被作者于2012-2-2 11:26:49编辑过]

--  作者:yyzlxc
--  发布时间:2012/2/2 10:46:00
--  
为什么用\'0001\'替换\'" & e.NewValue & "\',f 就可以显示为正确值?
--  作者:czy
--  发布时间:2012/2/2 11:00:00
--  

应该是:

 

Dim f As Byte = DataTables("设备折旧").Compute("Sum(折旧月数)","[设备编号] = \'" & e.DataRow("设备编号") & "\'")

 

你代码中的e.NewValue值是“折旧开始”的值。


--  作者:yyzlxc
--  发布时间:2012/2/2 11:15:00
--  
谢谢CZY老师的指教,问题解决了,再次衷心感谢!!祝CZY老师新年好!!