以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]计提折旧日期问题(已解决)  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=12592)

--  作者:yyzlxc
--  发布时间:2011/9/8 13:05:00
--  [求助]计提折旧日期问题(已解决)

设备折旧的计提方法,启用日期的次月1日开始计提,到停用日期的当月最后一天为止。用代码如何实现折旧开始和折旧结束的日期?请各位老师指教,谢谢

 

 

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

[此贴子已经被作者于2011-9-8 15:34:37编辑过]

--  作者:紙上不談兵
--  发布时间:2011/9/8 13:21:00
--  
一看文件格式,唯有閃
--  作者:yangming
--  发布时间:2011/9/8 14:20:00
--  

表属性的 DataColChanged 事件中

 

Dim Days As Integer
Days = Date.DaysInMonth(e.DataRow("停用日期").Year,e.DataRow("停用日期").Month)
Select Case e.DataCol.Name
    Case "启用日期"
        If e.DataRow("折旧开始").Year = Date.Today.Year

   If e.DataRow("折旧开始").Month <> 12

            e.DataRow("折旧开始")= e.DataRow("启用日期").Year & "-" & e.DataRow("启用日期").Month+1 & "- 01"
        Else
            e.DataRow("折旧开始")= e.DataRow("启用日期").Year +1 & "-01-01"
        End If
       
    Case "停用日期"
        e.DataRow("折旧结束")= e.DataRow("停用日期").Year & "-" & e.DataRow("停用日期").Month & "-" & Days
End Select

 

红字部分改成蓝字的就可以了

[此贴子已经被作者于2011-9-8 16:10:53编辑过]

--  作者:yyzlxc
--  发布时间:2011/9/8 14:35:00
--  
谢谢yangming老师的回复,折旧结束日期正确,但是折旧开始的日期均为第二年的第一天,要求是次月的第一天,还请yangming老师指教,非常感谢!!
--  作者:yyzlxc
--  发布时间:2011/9/8 15:11:00
--  

 

将代码作如下修改后,前几行的日期显示正确,但是马上出现出错提示,请各位老师指教,谢谢!!

 

 

Dim Days As Integer
Days = Date.DaysInMonth(e.DataRow("停用日期").Year,e.DataRow("停用日期").Month)
Select Case e.DataCol.Name
    Case "启用日期"
        If e.DataRow("折旧开始").Month < 12
            e.DataRow("折旧开始")= e.DataRow("启用日期").Year & "-" & e.DataRow("启用日期").Month+1 & "- 01"
        Else
            e.DataRow("折旧开始")= e.DataRow("启用日期").Year +1 & "-01-01"
        End If
       
    Case "停用日期"
        e.DataRow("折旧结束")= e.DataRow("停用日期").Year & "-" & e.DataRow("停用日期").Month & "-" & Days
End Select

 

 

 


图片点击可在新窗口打开查看此主题相关图片如下:捕获6.png
图片点击可在新窗口打开查看

--  作者:狐狸爸爸
--  发布时间:2011/9/8 15:27:00
--  

 

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


--  作者:yyzlxc
--  发布时间:2011/9/8 15:34:00
--  
问题解决,完全达到预期效果,谢谢狐爸的代码,再次感谢!!
--  作者:yangming
--  发布时间:2011/9/8 16:09:00
--  

是我搞错了,正确的应该是下面的:

Dim Days As Integer
Days = Date.DaysInMonth(e.DataRow("停用日期").Year,e.DataRow("停用日期").Month)
Select Case e.DataCol.Name
    Case "启用日期"
        If e.DataRow("折旧开始").Month <> 12
            e.DataRow("折旧开始")= e.DataRow("启用日期").Year & "-" & e.DataRow("启用日期").Month+1 & "- 01"
        Else
            e.DataRow("折旧开始")= e.DataRow("启用日期").Year +1 & "-01-01"
        End If
       
    Case "停用日期"
        e.DataRow("折旧结束")= e.DataRow("停用日期").Year & "-" & e.DataRow("停用日期").Month & "-" & Days
End Select