Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共5 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

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

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

[此贴子已经被作者于2024/5/27 8:19:48编辑过]
2楼
有点蓝 发表于:2024/5/27 8:41:00
参考:http://www.foxtable.com/webhelp/topics/2136.htm
3楼
hrw68529 发表于: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楼
有点蓝 发表于: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
5楼
hrw68529 发表于:2024/5/27 17:56:00
谢谢

共5 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03125 s, 2 queries.