Foxtable(狐表)用户栏目专家坐堂 → 关于关联表自动更新的问题


  共有3299人关注过本帖树形打印复制链接

主题:关于关联表自动更新的问题

帅哥哟,离线,有人找我吗?
mikee
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:89 积分:947 威望:0 精华:0 注册:2017/8/7 14:36:00
关于关联表自动更新的问题  发帖心情 Post By:2017/9/26 21:35:00 [只看该作者]

在做一个项目分摊计算的功能如附件图片,设计两个菜单按键
1. 计算分摊金额, 根据项目表中的开始/结束日期,把项目金额按天分摊到不同的月份,值计入到收益表。开始/结束日期所跨月度决定了收益表增加的记录数。

2. 确认收入金额, 根据项目确认日期, 收益表中,在确认日期之前的分摊金额,确认时间为确认日期所在月; 确认日期之后的按照计划分摊的时间,

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

因为项目表中的三个日期都可能变动,请教如何根据项目表随时更新收益表? 
图片点击可在新窗口打开查看此主题相关图片如下:分摊.png
图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111388 积分:567004 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/9/26 23:25:00 [只看该作者]

项目表,Datacolchanged事件


Select Case e.DataCol.Name
    Case "开始时间","结束时间"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("结束时间") = False AndAlso dr.IsNull("开始时间") = False AndAlso dr("开始时间") <= dr("结束时间") Then
            Dim d As Date = dr("开始时间")
            Dim nr As Row
            Dim qd As String = Format(dr("签署日期"),"yyyyMM")
            Dim amount As Integer = dr("金额")
            If Format(d,"yyyyMM") = Format(dr("结束时间"),"yyyyMM") Then
                nr = Tables("项目.收益").AddNew()
                nr("分期时间") = Format(d,"yyyyMM")
                nr("分期金额") = dr("金额")
                nr("确认时间") = qd
            Else
                Dim sum As Integer = 0
                nr = Tables("项目.收益").AddNew()
                nr("分期时间") = Format(d,"yyyyMM")
                sum = (Date.DaysInMonth(d.Year,d.Month) - d.Day + 1)*100
                nr("分期金额") = math.Min(sum,amount)
                nr("确认时间") = qd
                If sum >= amount Then Return
                d = new Date(d.Year,d.Month,1).AddMonths(2).AddDays(-1)
                Do While d < dr("结束时间")
                    nr = Tables("项目.收益").AddNew()
                    nr("分期时间") = Format(d,"yyyyMM")
                    nr("确认时间") = qd
                    Dim fqje As Integer = Date.DaysInMonth(d.Year,d.Month)*100
                    If fqje + sum > amount Then
                        nr("分期金额") = amount - sum
                        Return
                    End If
                    nr("分期金额") = fqje
                    sum += fqje
                    d = d.AddMonths(1)
                Loop
                If sum < amount Then
                    d = dr("结束时间")
                    nr = Tables("项目.收益").AddNew()
                    nr("分期时间") = Format(d,"yyyyMM")
                    nr("分期金额") = amount - sum
                    nr("确认时间") = qd
                End If
            End If
        End If
End Select

 回到顶部
帅哥哟,离线,有人找我吗?
Mikee
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:89 积分:947 威望:0 精华:0 注册:2017/8/7 14:36:00
  发帖心情 Post By:2017/9/27 8:24:00 [只看该作者]

谢谢老师,等我仔细体会下,图片点击可在新窗口打开查看

 回到顶部