Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Datenbankanwendung Firebird und Zeos (https://www.delphipraxis.net/165351-datenbankanwendung-firebird-und-zeos.html)

waldforest 25. Dez 2011 18:09

Datenbank: Firebird • Version: 2.1 • Zugriff über: Zeos 6.6.6

Datenbankanwendung Firebird und Zeos
 
Hallo,
ich bin dabei eine Lagerverwaltung mit Firebird und Zeos auf Muliuserbetrieb umzustellen.

Die Daten werden über eine zQuery im Grid dargestellt. Nun habe ich das Problem, dass wenn z.B. user 1 die Lagermenge von Artikel x ändert, der aktuelle Bestand bei user 2 nicht dargestellt wird.

Wie realisier ich die automatische Datenaktualisieung der queries vers. der Grids bei allen Usern ?
Ich muss verhindern, dass z.B. durch ein Datenkorrektur des gleichen Artikels bei einem Anderen Users, die zuvor erfolgte Änderung mit berücksichtigt wird.
(z.B. Lagerstand des Artikels ist 25,
User 1 erhöht die Lagermenge des Artikels um 10,
User 2 um weitere 5,
Gesamtlagermenge sollte dann 40 sein.

Aktuell wird bei mir leider die Datenmenge des Users 2 auf den eingelesenen Datenstand (25) um 5 erhöht und nicht auf den tatsächlichen 35.

Wie komme ich an den aktuellen Lagestand vor der Erhöhung ?
Hat jemand eine Beispiele für eine derartige Anwendung parat, ich komme hier dezeit nicht weiter ?

TZConnection wie folgt eingestellt.
Autocommit = True
TransactIsolatio= tiReadCommitted

Nersgatt 25. Dez 2011 18:46

AW: Datenbankanwendung Firebird und Zeos
 
Verschiebe die Arbeit auf den Server. Erstelle eine StoredProc "Lagermenge ändern". Parameter: Artikel und Wert um den die Menge geändert wird. Vom Client rufst Du nur noch die Stored Proc auf. So ist sichergestellt, dass immer mit den aktuellen Daten gerechnet wird. Das berechnen der neuen Lagermenge (Lagermenge lesen, Wert addieren, Wert zurückschreiben) darf halt nicht die Client machen.
Du kannst es auch in einem UPDATE machen. UPDATE ARTIKEL SET LAGERBESTAND = LAGERBESTAND + 5;

waldforest 25. Dez 2011 19:26

AW: Datenbankanwendung Firebird und Zeos
 
Danke,
der Tipp mit Stored Proc hat mich in Bezug auf Speicherung genau auf den richtigen Weg gebracht.

Nun muss ich nur noch für die Aktualisierungung der Grids sorgen.

Perlsau 8. Jan 2012 18:41

AW: Datenbankanwendung Firebird und Zeos
 
Zitat:

Zitat von waldforest (Beitrag 1143118)
Nun muss ich nur noch für die Aktualisierungung der Grids sorgen.

Kleiner Tip: ZIBEventAlerter

tsteinmaurer 8. Jan 2012 19:10

AW: Datenbankanwendung Firebird und Zeos
 
Im Falle von IBObjects gäbe es hier etwas Fertiges, was sich DML Caching nennt. Hatte das hier mal beschrieben und wie man vor allem das Global DML Caching aufsetzt. http://www.upscene.com/products.audi...ching_main.php


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:00 Uhr.

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