![]() |
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 |
AW: FIrebird Feld ersetzen durch StoredProc
Jein, man müsste dann eionen Join auf die SP machen
|
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 |
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. |
AW: FIrebird Feld ersetzen durch StoredProc
Eine SP liefert nun mal eine Ergebnismenge ("Tabelle")
|
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.
|
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 23:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz