Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Verständisfragen zur Datasets/Query (https://www.delphipraxis.net/186349-verstaendisfragen-zur-datasets-query.html)

Luckner 26. Aug 2015 10:45

Datenbank: Firebird • Version: 2.1 • Zugriff über: IBDataset

Verständisfragen zur Datasets/Query
 
Hallo,
habe eine kleine Auftragsverwaltung geschrieben mit einer SQL-Datenbank (Firebird). Es wird von mehreren Arbeitsplätzen darauf zugegriffen. Benutze für die Übersicht (DBGrid) der Aufträge ein IBdataset1 und für die Bearbeitung (Bearbeiten, Speichern usw.) der einzelnen Datensätze ein Ibdataset2. Jetzt passiert schon öfter, dass wenn ein Anwender in der Auftragsübersicht ist (Dataset1) ein weitere Anwender einen Datensatz (neu oder Bearbeitung) speichern möchte (über Dataset2), die Tabelle gesperrt ist. Mir ist klar, dass für ein DBGrid ein Dataset "open" sein muss, sonst zeigt so ein Grid nichts an. Für die detailierte Anzeige eines Datensatzes benutze ich keine DB-Komponenten. Die Daten werden in verschiedene Editfelder usw. kopiert und dann kann ich so ein dataset "close" setzen.
Meine Frage wäre, wie bekommt ein DBGrid mit, dass ein anderer Anwender ein Datensatz geändert, bzw. hinzugefügt hat.

Danke.

hde 26. Aug 2015 22:56

AW: Verständisfragen zur Datasets/Query
 
gar nicht

mkinzler 27. Aug 2015 04:54

AW: Verständisfragen zur Datasets/Query
 
Wenn Du das willst kannst Du einen entsprechenden (FB) Event auslösen, auf welchen der Client dann reagieren kann.

hoika 27. Aug 2015 06:59

AW: Verständisfragen zur Datasets/Query
 
Hallo,

1. Timer
dazu ev. auch eine Log-Tabelle mitschreiben, wo alle Änderungen drinstehen (z.B. automatisch mit einem DB-Trigger),
ID in der Log-Tabelle automatisch hochzählen, ID beim Form-Start merken und wenn es eine höhere ID gibt, gab es Änderungen

2. FB-Event
(wie schon gesagt)

3. TCP-IP
Broadcast an alle oder jeder ist TCP-Server (Listener) und TCP-Client (Sender)


Um die Änderungen anzuzeigen, muss eine neue Transaktion gestartet werden.

Wie du siehst, hat deine einfache Frage keine einfache Antwort.


Heiko

mkinzler 27. Aug 2015 07:18

AW: Verständisfragen zur Datasets/Query
 
Zitat:

Um die Änderungen anzuzeigen, muss eine neue Transaktion gestartet werden.
Genaugenommen muss die bestehende mit Commit abgeschlossen werden bzw. ein "dirty read" isolation level verwendet werden ( zu was ich nicht raten würde)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 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