以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]如何在本表中根据条件进行数据引用? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=192056) |
-- 作者:hrw68529 -- 发布时间:2024/5/27 8:13:00 -- [求助]如何在本表中根据条件进行数据引用? 如下图:本表中的逻辑关系为:本期结余资金=上期结余资金-门诊金额-住院金额 现在想实现的目标是:当新增一行时,根据年度、月份(以月份为一个计算周期)、单位代码,上期结余资金引用本单位上个月的本期结余资金。如果跨年度,下年度的1月份的“上期结余资金”引用上一年度本单位的12月份的“本期结余资金"。如何实现,请专家给指导,谢谢。另外,如果在本月中,一个单位有多笔数据,下个月数据引用时,要以上个月最后一笔的“本期结余资金”进行引用。
[此贴子已经被作者于2024/5/27 8:19:48编辑过]
|
-- 作者:有点蓝 -- 发布时间:2024/5/27 8:41:00 -- 参考::http://www.foxtable.com/webhelp/topics/2136.htm |
-- 作者: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编辑过]
|
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2024/5/27 17:56:00 -- 谢谢 |