以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]按规则分摊费用  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=173534)

--  作者:lgj716330
--  发布时间:2021/12/3 20:53:00
--  [求助]按规则分摊费用
分摊标准较为复杂,有点晕,还请帮忙解决,谢谢

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



--  作者:有点蓝
--  发布时间:2021/12/4 9:42:00
--  
完全没看懂。到底要计算什么东西?
--  作者:lgj716330
--  发布时间:2021/12/4 10:43:00
--  
根据档案表得到分摊表的结果,分摊规则如下

要求总费用按24个月分摊
月分摊金额=总费用/分摊月数
正常情况下,如果分摊表中未显示关店(即关店年月为空),则分摊表中每个核算月份的分摊金额为档案表中的月分摊金额,直到总费用摊完为止
如果在24个月内关店的,则在关店月份把未分摊完的费用一次性分摊
如果在24个月内重新装修的(可能在几年内发生多次重新装修),则在重新装修月份把未分摊完的费用一次性分摊,同时按正常分摊重新装修产生的费用
如果在24个月后重新装修的(可能在几年内发生多次重新装修),则重新装修的费用按正常开始分摊,直到触发关店或再次重新装修

--  作者:有点蓝
--  发布时间:2021/12/4 10:53:00
--  
看不懂。举例说明一下,表格里的数据每一行的结果是怎么计算出来的,单元格的数据是怎么用的
--  作者:lgj716330
--  发布时间:2021/12/4 14:02:00
--  
嗯 ,自己解决了,加了几列辅助列处理
--  作者:lgj716330
--  发布时间:2021/12/4 15:08:00
--  
Select Case e.DataCol.Name
    Case "部门编号"
    Dim gdn As Integer = CInt(e.DataRow("关店年份"))
    Dim gdy As Integer = e.DataRow("关店月份")
    Dim nf As Integer = CInt(e.DataRow("年份"))
    Dim yf As Integer = e.DataRow("月份") 
    Dim zjn As Integer = CInt(e.DataRow("最近装修年份"))
    Dim zjy As Integer = e.DataRow("最近装修月份") 
    Dim scn As Integer = CInt(e.DataRow("上次装修年份"))
    Dim scy As Integer = e.DataRow("上次装修月份") 

    Dim nfzj As Integer = (nf-zjn)*12+(yf-zjy)+1
    Dim nfgd As Integer = (nf-gdn)*12+(yf-gdy)+1
    Dim zjsc As Integer = (zjn-scn)*12+(zjy-scy)+1
    Dim zjgd As Integer = (zjn-gdn)*12+(zjy-gdy)+1

End Select

总提示错误
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2021.12.4.11
错误所在事件:表,店铺装修摊销标准,DataColChanged
详细错误信息:
调用的目标发生了异常。
从字符串“”到类型“Integer”的转换无效。
输入字符串的格式不正确。
[此贴子已经被作者于2021/12/4 15:09:00编辑过]

--  作者:有点蓝
--  发布时间:2021/12/4 16:32:00
--  
判断一下单元格有没有值
Dim gdn As Integer 
if e.DataRow.isnull("关店年份") = false then
gdn =CInt(e.DataRow("关店年份"))
endif