【问题标题】:Ideas to replace Stored Procedure in Cash Flow report [closed]在现金流报告中替换存储过程的想法[关闭]
【发布时间】:2008-09-29 18:36:52
【问题描述】:

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

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

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

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

谁能给我一些可能的不同解决方案?解决问题?

此报告正在 DataGrid 上显示。

【问题讨论】:

    标签: delphi stored-procedures report


    【解决方案1】:

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

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

    余额远期问题仍需解决,您必须考虑所涉及的交易数量和系统所需的响应能力,但至少您可以一次性决定如何处理,而不必随着系统其他部分的发展进行更改。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2013-02-24
          • 2021-02-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-17
          • 1970-01-01
          • 2014-07-18
          • 1970-01-01
          相关资源
          最近更新 更多