Foxtable(狐表)用户栏目专家坐堂 → [求助]如何在本表中根据条件进行数据引用?


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

主题:[求助]如何在本表中根据条件进行数据引用?

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


加好友 发短信
等级:五尾狐 帖子:1145 积分:8926 威望:0 精华:0 注册:2012/7/10 9:09:00
[求助]如何在本表中根据条件进行数据引用?  发帖心情 Post By:2024/5/27 8:13:00 [只看该作者]

如下图:本表中的逻辑关系为:本期结余资金=上期结余资金-门诊金额-住院金额
现在想实现的目标是:当新增一行时,根据年度、月份(以月份为一个计算周期)、单位代码,上期结余资金引用本单位上个月的本期结余资金。如果跨年度,下年度的1月份的“上期结余资金”引用上一年度本单位的12月份的“本期结余资金"。如何实现,请专家给指导,谢谢。另外,如果在本月中,一个单位有多笔数据,下个月数据引用时,要以上个月最后一笔的“本期结余资金”进行引用。

图片点击可在新窗口打开查看此主题相关图片如下:截图00.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2024/5/27 8:19:48编辑过]

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


加好友 发短信
等级:超级版主 帖子:110758 积分:563716 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/5/27 8:41:00 [只看该作者]


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


加好友 发短信
等级:五尾狐 帖子:1145 积分:8926 威望:0 精华:0 注册:2012/7/10 9:09:00
  发帖心情 Post By:2024/5/27 10:14:00 [只看该作者]

有点蓝,下述代码,当第一行的”上期结余资金“输入数字时,自动变为0,怎么修改,请指导

DataColChanged事件代码:

Select Case e.DataCol.Name
    Case "单位代码","上期结余资金","门诊金额","住院金额"
        Dim dr As DataRow
        Dim mr As DataRow = e.DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [单位代码] = '" & mr("单位代码") & "'", "[_SortKey] Desc")
        If dr Is Nothing Then
            mr("上期结余资金") = mr("本期结余资金") 
            mr("本期结余资金") = mr("上期结余资金") - mr("门诊金额")- mr("住院金额")
            dr = mr
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [单位代码] = '" & dr("单位代码") & "'", "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1
            drs(i)("上期结余资金") = drs(i)("本期结余资金") 
            drs(i)("本期结余资金") = drs(i-1)("本期结余资金") + drs(i)("上期结余资金") - drs(i)("门诊金额")- drs(i)("住院金额")
        Next
        If e.DataCol.Name = "单位代码" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [单位代码] = '" & e.OldValue & "'", "[_SortKey] Desc")
            If dr Is Nothing Then
                dr = e.DataTable.Find("[单位代码] = '" & e.OldValue & "'", "[_SortKey]")
                If dr IsNot Nothing Then
                    dr("上期结余资金") = dr("本期结余资金") 
                    dr("本期结余资金") = dr("上期结余资金") - dr("门诊金额")- dr("住院金额")
                End If
            End If
            If dr IsNot Nothing Then
                drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [单位代码] = '" & dr("单位代码") & "'", "[_SortKey]")
                For i As Integer = 1 To drs.Count - 1
                    drs(i)("上期结余资金") = drs(i)("本期结余资金") 
                    drs(i)("本期结余资金") = drs(i-1)("本期结余资金") + drs(i)("上期结余资金") - drs(i)("门诊金额")- drs(i)("住院金额")
                Next
            End If
        End If
End Select

表事件DataRowDeleting的代码:

e.DataRow("本期结余资金") = 0
e.DataRow("门诊金额") = 0
e.DataRow("住院金额") = 0

表事件AfterMoveRow的代码:

Dim Key As Decimal
Dim Index As Integer
Dim Filter As String
Dim r As Row
Index = Math.Min(e.OldIndex, e.NewIndex)
Key = e.Table.Rows(Index)("_SortKey")
r = e.Table.Rows(e.NewIndex)
Filter = "[_SortKey] >= " & Key & " And [单位代码] = '" & r("单位代码") & "'"
e.Table.DataTable.DataCols("上期结余资金").RaiseDataColChanged(Filter)
[此贴子已经被作者于2024/5/27 10:15:19编辑过]

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


加好友 发短信
等级:超级版主 帖子:110758 积分:563716 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/5/27 10:42:00 [只看该作者]

        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [单位代码] = '" & mr("单位代码") & "'", "[_SortKey] Desc")
        If dr Is Nothing Then
            ‘’去掉这一行mr("上期结余资金") = mr("本期结余资金") 
            mr("本期结余资金") = mr("上期结余资金") - mr("门诊金额")- mr("住院金额")
            dr = mr
        End If

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


加好友 发短信
等级:五尾狐 帖子:1145 积分:8926 威望:0 精华:0 注册:2012/7/10 9:09:00
  发帖心情 Post By:2024/5/27 17:56:00 [只看该作者]

谢谢


 回到顶部