Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   FIrebird Feld ersetzen durch StoredProc (https://www.delphipraxis.net/153081-firebird-feld-ersetzen-durch-storedproc.html)

Pro_RJ 20. Jul 2010 08:33

Datenbank: FireBird • Version: 2.X • Zugriff über: Nativ

FIrebird Feld ersetzen durch StoredProc
 
Huhu liebe Delphi-Gemeinde,

Ich hätte da mal eine kleine Frage:
ich habe ein Bestehendes Datenbanksystem mit Folgendem Aufbau:
Tabelle Artikel
Felder ArtikelNr1,Bezeichnung,Lagerbestand.

Bisher wurde der Lagerbestand in dieser Tabell immer aufaddiert bzw. abgezogen. Dies soll jetzt aber geändert werden so das der Lagerbestand per StoredProcedure nur berechnet wird, wenn er wirklich benötigt wird. DIese änderung ist nötig da die Erfassung von Eingans/Ausgangsbelegen immer langsamer wird und es nachweislich an der Lagerpflege hängt. Desweitern ist es ein Problem, wenn man per Datenimport Daten einliest, die den Lagrbestand verändern sind die Artikel so lange gespert, bis die Transaction abgeschlossen ist, was wiederum zu dem Problem füht, wenn mehrere User gleichzeitig einen Import durchführen.

Da diese Tabelle aber eine unserer meist genutzten Tabellen im Programm ist und wir nicht jedes Statement ändern möchte hatte ich mir gedacht, gibt es eine möglichkeit das Feld Lagerbestand zu belassen aber diesem Feld eine Procedure zu hinterlegen. ALso das das Feld nicht mehr vom Typ Numeric ist sondern eben immer aktuell Berechnet wird.

Oder was eventuell auf eine möglichkeit wäre, Die Tabelle Umzubenennen in z.b. Artikel_Stamm und eine View anzulegen mit dem Namen Artikel und darin das Feld einfach zu berechnen. Aber da ist das Problem, das man in eine View keine StoredProc einbinden kann(hier kommt immer die Fehlermeldung "Feature not Supported")

ich hoffe, das mir jemand von euch helfen kann.

mfg
Jens

mkinzler 20. Jul 2010 08:36

AW: FIrebird Feld ersetzen durch StoredProc
 
Jein, man müsste dann eionen Join auf die SP machen

Pro_RJ 20. Jul 2010 08:40

AW: FIrebird Feld ersetzen durch StoredProc
 
Das dachte ich mir auch aber dann müsste ich eben an jedes Statement wo der Lagerbestand benötigt wird ein
Select ... from Artikel Left outer Join Lagerbestand()....
machen und genau das wollte ich eigentlich vermeiden

omata 20. Jul 2010 08:41

AW: FIrebird Feld ersetzen durch StoredProc
 
Warum muss für die Berechnung unbedingt eine Procedure benutzt werden? Enthält die so komplizierte Berechnungen?

Deine Idee mit der View ist doch wunderbar und löst genau deine Probleme.

mkinzler 20. Jul 2010 08:43

AW: FIrebird Feld ersetzen durch StoredProc
 
Eine SP liefert nun mal eine Ergebnismenge ("Tabelle")

omata 20. Jul 2010 08:45

AW: FIrebird Feld ersetzen durch StoredProc
 
Achso, ich dachte das ist ein Wert pro Artikel, immerhin war das in der Ursprungstabelle ja auch nur ein Feld. Aber so kann man sich eben irren, sorry.

Pro_RJ 20. Jul 2010 08:49

AW: FIrebird Feld ersetzen durch StoredProc
 
Ja also in der Tabelle steht der Lagerbestand für eine Artikel. die Berechnung geht aber noch weiter, da der Lagerbestand auch noch pro Lagerort berechnet werden kann/muss. und eine StoredProc ist da von der Pflegbarkeit her leichter. das Prinzip haben wir auch schon in anderen Stellen im Programm genutzt (z.B. bei der Berechnung einer SaldenListe) da war aber der Vorteil, das das eine Komplett neue Tabelle war. nur hier ist eben eine vorhandene tablle betroffen,
Desweiteren sollte diese StoredProc auch mer zurück geben(z.B.Lagerbestand,Lagerwert,BestellteMenge,Re servierte Menge,Unterschrittene Menge usw)


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:19 Uhr.

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