0

我们有一个现金流量报告,基本上是这样的结构:

Date |Credit|Debit|balance|
09/29| 20   | 10  | 10    |
09/30| 0    | 10  | 0     |

主要问题是余额,由于我们使用 DataSet 作为数据,计算 DataSet 上的余额有点困难,因为我们总是需要前一天的余额。

此外,这些数据来自多个表,并且很难维护此过程,因为数据库元数据经常更改。

任何人都可以给我一些可能的不同解决方案吗?问题?

此报表显示在 DataGrid 上。

4

3 回答 3

1

这对您来说可能变化太大或不合时宜,但现金流量报告向我表明,您可能正在正式或非正式地维护某种总分类账安排。如果您是,那么也许我对此很幼稚,但我认为您应该将总分类帐详细信息保留为单个表格,其中包含最少数量的列,例如 ID、日期、帐户、来源和金额。

来自不同表格的所有数据表明,有几种不同类型的事件会影响您的现金。对我来说,在他们自己的表中表示这些不同类型的事件(如应收账款或应付账款或库存等)是有意义的,但诀窍是在这些其他表中没有任何货币列。相反,让他们参考总账明细中记录该数据的行。如果您强制执行此操作,那么无论对其他表进行更改,现金流量都将始终保持不变。

余额转发问题仍然需要解决,您必须考虑所涉及的交易数量和系统所需的响应能力,但至少您可以决定如何处理一次,而不必进行更改,因为你系统的其他部分会进化。

于 2008-09-29T20:48:00.063 回答
0

在代码方面,您有两个相对简单的选项,但它们都涉及遍历数据集。

选项 1:数据绑定之前的 For 循环。对于数据表中的每一行,将贷方/借方添加/减去前一行的余额并将其分配到数据表的相应单元格。

选项 2:在数据绑定期间计算。首先,您将有一个全局变量,您可以在其中保存您的值。在数据绑定之前将其设置为零。对于每个项目或替代项目,将贷方/借方添加/减去全局变量并将其分配给数据网格的适当单元格。

于 2008-09-29T18:42:54.217 回答
0

请注意,这通常意味着网络流量的大幅增加,这会降低整个应用程序的性能(因为您必须获取所有这些数据才能在客户端上处理)。

另一种方法是创建一个(在您喜欢的实现中)中间层应用程序,您可以发送请求并在数据库服务器或单独的网段中执行此处理。

如果有SP做这个计算,通常是因为它涉及大量数据,目的是避免这种在网络中的循环。

于 2008-09-30T14:06:53.420 回答