Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Feldwert in IB Automatisch berechnen duch sp. (https://www.delphipraxis.net/71857-feldwert-ib-automatisch-berechnen-duch-sp.html)

mojo777 21. Jun 2006 22:21

Datenbank: ib • Version: 6 • Zugriff über: sql

Feldwert in IB Automatisch berechnen duch sp.
 
hallo,
kennst jemand vll eine möglichkeit einen feldwert automatisch durch eine sp zu berechnen?
ich will z.b. eine spalte haben, in der steht wieviel ein kunde bereits gekauft hat.
ist sicherlich auch anders möglich, aber ich würde das gerne mal so elegant lösen. :-)


mfg

mkinzler 21. Jun 2006 22:25

Re: Feldwert in IB Automatisch berechnen duch sp.
 
Du kannst einen Trigger schreiben, der dann die SP verwendet.
Sind die Kaufvorgänge auch in der DB gespeichert?

mojo777 21. Jun 2006 22:27

Re: Feldwert in IB Automatisch berechnen duch sp.
 
ja, aber ich will die daten nicht statisch drin haben. (also in der spalte.. die verkäufe sind natürlich gespeichert in einer table... geht dann mit sum bzw count etc..)
der trigger ist ja schon zu krass für sowas..
wäre echt am besten als eine art "computed by" feld.

mkinzler 21. Jun 2006 22:32

Re: Feldwert in IB Automatisch berechnen duch sp.
 
Zitat:

Zitat von mojo777
ja, aber ich will die daten nicht statisch drin haben. (also in der spalte.. die verkäufe sind natürlich gespeichert in einer table

es lebe die Redundanz ;-)
Zitat:

... geht dann mit sum bzw count etc..)
Ja
Zitat:

der trigger ist ja schon zu krass für sowas..
Warum, im "before Insert" der Verkaufstabelle.
Zitat:

wäre echt am besten als eine art "computed by" feld.
Dann würde es jedesmal berechnet werden, wenn ein select auf die Daten erfolgen würde.

mojo777 21. Jun 2006 22:37

Re: Feldwert in IB Automatisch berechnen duch sp.
 
Zitat:

Dann würde es jedesmal berechnet werden, wenn ein select auf die Daten erfolgen würde.
ja. das will ich :-)


redundanz will ich nich... :-P

mkinzler 21. Jun 2006 22:40

Re: Feldwert in IB Automatisch berechnen duch sp.
 
Zitat:

Zitat von mojo777
Zitat:

Dann würde es jedesmal berechnet werden, wenn ein select auf die Daten erfolgen würde.
ja. das will ich :-)

Ist dir der Datenbankzugriff zu schnell (zu gute Performance, die zunichte gemacht werden muß)?


redundanz will ich nich... :-P[/quote]Wenn du die Verkäufe auf der einen seite und die Anzahl in der "Artikel"-Tabelle nochmal speicherst, dann ist das Redundanz.

mojo777 21. Jun 2006 22:49

Re: Feldwert in IB Automatisch berechnen duch sp.
 
...... :-D
nun ja.
die anwendung ist in der tat nicht zeitkritisch.
und diese eine query wird nicht allzuoft ausgeführt... also auf userbefehl halt. die 10-20 ms sind ok.

gruß

mkinzler 21. Jun 2006 23:01

Re: Feldwert in IB Automatisch berechnen duch sp.
 
Wie gesagt:
Beste Variante: SP die manuell aufgerufen wird und Anzahl der Verkaufsdatensätze pro Artikel zurückliefert.
2. Variante: Anzahl ist normales Feld in Tabelle, welches in einem Trigger der Verkaufstabelle nach Insert ( durch Aufruf der SP) gesetzt wird.
3. Lösung durch View, in dem das Anzahl Feld durch Aufruf der SP bei jedem Zugriff auf das Feld "berechnet" wird.

Nachteil von 3: Je nach Anzahl der Artikel und deren Verkauftransaktionen sehr langsam, da bei jdem Zugriff berechnet werden muß. D.H wenn man
SQL-Code:
select * from Artikel;
ausführt, muß für jede Zeile ein Aufruf und damit eine Summenbildung erfolgen.

mojo777 21. Jun 2006 23:08

Re: Feldwert in IB Automatisch berechnen duch sp.
 
hmm.. ich dachte view geht nur nach statischen inhalten... also kann nur mit parametern arbeiten, die auch fest irgendwo gespeichert sind.... :?

ok. es scheint so zu sein, dass man keine lustige funktion in computed by schreiben kann in ib wie in delphi...

dank dir!

mkinzler 21. Jun 2006 23:23

Re: Feldwert in IB Automatisch berechnen duch sp.
 
Natürlich kannst du auch in Delphi eine computed Feld anlegen, das du dann durch eine SP berechnen lassen kannst. Oder du kannst die Anzahl der Verkäufe einfach in der Query hinzu-Joinen. in beiden Fällen gibt es dann keine Redundanz, da die Felder ja nicht wirklich existieren.
Für was brauchst du das eigentlich?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz