替换现金流报告中的存储过程的想法
我们有一个现金流量报告,基本上是以下结构:
Date |Credit|Debit|balance| 09/29| 20 | 10 | 10 | 09/30| 0 | 10 | 0 |
主要问题是余额,并且由于我们为数据使用数据集,因此很难计算数据集上的余额,因为我们总是需要前一天的余额。
同样,这些数据来自多个表,并且由于数据库元数据经常更改,因此很难维护此过程。
任何人都可以给我一些可能的不同解决方案吗?为了这个问题?
该报告正在显示在DataGrid上。
解决方案
在代码方面,我们有两个相对简单的选项,但它们都涉及遍历数据集。
选项1:在数据绑定之前进行循环。
对于数据表中的每一行,将贷方/借方添加/减去到前一行的余额,然后将其分配给数据表的适当单元格。
选项2:在数据绑定期间进行计算。
首先,我们将拥有一个可以保存值的全局变量。在数据绑定之前将其设置为零。对于每个项目或者项目,将贷方/借方添加/减去到全局变量,并将其分配给数据网格的适当单元。
这对我们来说可能是一个很大的变化或者超出预期范围,但是现金流量报告向我表明我们可能在正式或者非正式地维护某种总分类帐安排。如果是这样,那么也许我对此很幼稚,但我认为我们应该将总分类账明细保持为一个单独的表,该表具有最少的列数,例如ID,日期,科目,来源和金额。
来自不同表的所有数据表明存在几种不同类型的事件在影响现金。对我来说,在自己的表中表示这些不同类型的事件(例如应收账款或者应付账款或者库存等)是有意义的,但诀窍是在这些其他表中不包含任何货币列。而是让他们参考总帐明细中记录该数据的行。如果强制执行此操作,则现金流量将始终保持相同,而不管其他表的更改如何。
余额结转问题仍然必须解决,我们必须考虑到所涉及的交易数量和系统所需的响应能力,但是至少我们可以一次决定如何处理它,而不必进行更改系统的其他部分也在不断发展。
请注意,这通常意味着网络流量的大量增加,这可能会降低整个应用程序的性能(因为我们必须获取所有这些数据才能在客户端上进行处理)。
另一种方法是创建一个(我们喜欢的实现方式)中间层应用程序,该应用程序可以发送请求并在数据库服务器或者单独的网段中进行此处理。
如果有一个SP执行此计算中,通常是因为它触及很多的数据,目标是避免这种循环的网络。