Hallo Firebird-Spezialisten ![Peinlichkeit](https://entwickler-forum.de/core/images/smilies/redface.png)
weil ich (noch) kein Spezialist in Sachen Datenbankprogrammierung bin, aber doch so einige Ideen habe, frage ich mich, ob es möglich ist, in der Datenbank statt in der Anwendung ein Update gewisser Spalten vornehmen zu lassen. Meine DB-Struktur sieht so aus:
Die Tabelle PROJEKTE enthält eine Spalte BETRAG (Numeric, 15,2) und eine Spalte WAEHRUNG (Integer), ein FK (Foreign Key).
Letztere verweist auf die Tabelle WAEHRUNG und die Spalte IDX_WAEHRUNG, den PK (Primary Key).
In der Tabelle WAEHRUNG gibt es die Spalte KURS, die den Wechselkurs in Bezug auf den Euro enthält: 1 EUR = (z.B.) 1,262 USD. Beim Eintrag EURO steht da natürlich 1,000.
So, nun kann der Anwender ja die Währung in seinem Programm ändern, und da wäre es natürlich saublöd, wenn sich dabei der Betrag, der ja nun in der neuen Währung angezeigt wird, nicht ebenfalls ändert. Da als Bezugspunkt immer der Euro gelten soll, hab ich eine weitere Spalte in der Tabelle PROJEKTE angelegt, die BETRAG_EURO heißt und logischerweise den jeweiligen Betrag in Euro enthalten soll. Diesen Eintrag möchte ich, wenn möglich, von der Datenbank automatisch vornehmen lassen, sobald sich der Betrag ändert. Trägt der Anwender also, nachdem er ein neues Projekt (Tabelle PROJEKTE) angelegt hat, dort einen Betrag ein oder ändert denselben, soll dieser automatisch in EURO umgerechnet und dieses Resultat in der Spalte BETRAG_EURO eingetragen werden.
Ich stelle mir das so vor, daß das ganze in eine Stored Procedure (SP) gepackt wird und ein Trigger (after update) diese SP aufruft. Aber ich hab keinen blassen Schimmer, wie ich das umsetzen kann: Wie komme ich an die einzelnen Werte und wie sieht eine solche Berechnung in Firebird aus? Im Prinzip muß ich ja nur den Betrag durch den Wechselkurs teilen, da der Kurs angibt, wieviel man in der Währung für einen Euro erhält.
![Peinlichkeit](https://entwickler-forum.de/core/images/smilies/redface.png)
weil ich (noch) kein Spezialist in Sachen Datenbankprogrammierung bin, aber doch so einige Ideen habe, frage ich mich, ob es möglich ist, in der Datenbank statt in der Anwendung ein Update gewisser Spalten vornehmen zu lassen. Meine DB-Struktur sieht so aus:
Die Tabelle PROJEKTE enthält eine Spalte BETRAG (Numeric, 15,2) und eine Spalte WAEHRUNG (Integer), ein FK (Foreign Key).
Letztere verweist auf die Tabelle WAEHRUNG und die Spalte IDX_WAEHRUNG, den PK (Primary Key).
In der Tabelle WAEHRUNG gibt es die Spalte KURS, die den Wechselkurs in Bezug auf den Euro enthält: 1 EUR = (z.B.) 1,262 USD. Beim Eintrag EURO steht da natürlich 1,000.
So, nun kann der Anwender ja die Währung in seinem Programm ändern, und da wäre es natürlich saublöd, wenn sich dabei der Betrag, der ja nun in der neuen Währung angezeigt wird, nicht ebenfalls ändert. Da als Bezugspunkt immer der Euro gelten soll, hab ich eine weitere Spalte in der Tabelle PROJEKTE angelegt, die BETRAG_EURO heißt und logischerweise den jeweiligen Betrag in Euro enthalten soll. Diesen Eintrag möchte ich, wenn möglich, von der Datenbank automatisch vornehmen lassen, sobald sich der Betrag ändert. Trägt der Anwender also, nachdem er ein neues Projekt (Tabelle PROJEKTE) angelegt hat, dort einen Betrag ein oder ändert denselben, soll dieser automatisch in EURO umgerechnet und dieses Resultat in der Spalte BETRAG_EURO eingetragen werden.
Ich stelle mir das so vor, daß das ganze in eine Stored Procedure (SP) gepackt wird und ein Trigger (after update) diese SP aufruft. Aber ich hab keinen blassen Schimmer, wie ich das umsetzen kann: Wie komme ich an die einzelnen Werte und wie sieht eine solche Berechnung in Firebird aus? Im Prinzip muß ich ja nur den Betrag durch den Wechselkurs teilen, da der Kurs angibt, wieviel man in der Währung für einen Euro erhält.