Frage

Wir haben einen Cashflow-Bericht, die im Grunde in dieser Struktur ist:

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

Das Hauptproblem ist die Balance, und da wir einen Datensatz für die Daten verwenden, es ist irgendwie schwer das Gleichgewicht auf dem Datensatz zu berechnen, weil wir die Balance des Vortages immer brauchen.

Auch kommt diese Daten aus mehreren Tabellen und es war schwer, diese Verfahren zu erhalten, da die Datenbank Metadaten häufig ändert.

Jeder konnte mir einige mögliche andere Lösungen? für das Problem?

Dieser Bericht ist auf einem Datagrid angezeigt wird.

War es hilfreich?

Lösung

Dies kann zu groß sein, um eine Änderung oder von der Marke für Sie, aber ein Cash-Flow-Bericht zeigt mir, dass Sie wahrscheinlich gehalten wird, entweder formell oder informell, ein Hauptbuch Anordnung von einer Art. Wenn Sie sind, dann bin ich vielleicht naiv darüber, aber ich denke, Sie sollten Ihr Hauptbuch Detail als eine einzige Tabelle zu halten, die eine absolute Minimum Anzahl der Spalten wie ID, Datum, Konto, Quelle und Betrag hat.

Alle Daten, die aus verschiedenen Tabellen kommen legt nahe, dass es verschiedene Arten von Ereignissen, die Ihr Geld auswirken. Für mich, was diese verschiedenen Arten von Veranstaltungen in ihren eigenen Tabellen (wie Forderungen oder Verbindlichkeiten oder Inventar oder was auch immer) macht Sinn, aber der Trick ist, um keine Geld Spalten in den anderen Tabellen. Stattdessen müssen sie in dem Hauptbuch Detail auf die Zeile verweisen, wo die Daten aufgezeichnet werden. Wenn Sie dies erzwingen, dann würde die Cash Flow immer die gleiche Arbeit, unabhängig von Änderungen an den anderen Tischen.

Der Saldovortrag Frage hat noch angegangen werden, und Sie haben die Anzahl der Transaktionen berücksichtigen beteiligt und das Ansprechverhalten des Systems erforderlich, aber zumindest können Sie eine Entscheidung darüber zu treffen, wie es einmal zu handhaben und nicht müssen Änderungen wie die anderen Teile des Systems zu entwickeln.

Andere Tipps

Auf der Code-Seite der Dinge, haben Sie zwei relativ einfache Möglichkeiten bekommen, aber sie beide betreffen durch den Datensatz laufen.

Option 1: For-Schleife vor der Datenbindung. Für jede Zeile in der Datentabelle, addieren / subtrahiert die Kredit- / Abbuchungen auf die Bilanz der vorherigen Reihe und weisen Sie auf die entsprechende Zelle Ihrer Datentabelle.

Option 2: Berechnung während der Datenbindung. Zuerst würden Sie eine globale Variable, die Sie Ihren Wert in halten können. Stellen Sie sich auf Null unmittelbar vor dem databind. Für jedes Element oder altitem, addieren / subtrahieren die Kredit- / Abbuchungen auf die globale Variable, und weisen Sie auf die entsprechende Zelle des Datagrid.

Beachten Sie, dass dies in der Regel bedeutet, große Erhöhung des Netzwerkverkehrs, die die Leistung der Anwendung als Ganze reduzieren (da Sie alle diese Daten holen müßten auf dem Client zu verarbeiten).

Ein alternativer Ansatz ist die Schaffung einer (in welcher Ausführung Sie mögen) Mittelschicht-Anwendung, die Sie eine Anfrage diese Verarbeitung auf dem Datenbankserver oder in einem separaten Netzwerksegment senden und tun.

Wenn es eine SP diese Berechnung zu tun, in der Regel ist, weil es berührt viele Daten und das Ziel ist, dies im Netz zirkulierenden zu vermeiden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top