Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Paradox im Netz akzualisiert nur bei Neustart des Programms (https://www.delphipraxis.net/46117-paradox-im-netz-akzualisiert-nur-bei-neustart-des-programms.html)

Siggi 18. Mai 2005 22:05

Datenbank: Paradox • Zugriff über: BDE

Paradox im Netz akzualisiert nur bei Neustart des Programms
 
Hi,
ich habe eine Delphi-Applikation mit einer Paradox-DB. Diese war bisher eine Einzelplatz-Anwendung, soll nun aber auch im Netzwerk genutzt werden (ja, ich weiß dass Paradox-Tabellen keine optimale Lösung für eine Netzwerkapplikation sind, aber im Moment muss das erst mal reichen - Umstellung ist schon in Arbeit, dauert aber leide länger als nur ein paar Tage...).

Die Paradox-Tabellen liegen auf dem Laufwerk Z: im Ordner Daten. NET DIR in der BDE ist auf allen Clients auf Z:\ eingestellt. In meiner Testumgebung ist Z: allerdings auf dem einen PC nur ein per Subst erstellter alias für einen Ordner, was aber theoretisch kein Problem sein sollte.

Nun tritt folgendes Problem auf:
ich kann Daten auf beiden Clients bearbeiten und hinzufügen. Die Änderungen werden jedoch auf dem anderen Client erst sichtbar, wenn ich das Programm auf beiden Rechnern beende und neu starte. Ein reines schließen und öffnen der TTable-Objekte genügt nicht.

Woran kann das liegen?

Gruß,
Siggi

Albi 19. Mai 2005 06:24

Re: Paradox im Netz akzualisiert nur bei Neustart des Progra
 
Hallo,

Das liegt wohl daran, dass du nicht mit dem aktuellen Daten arbeitest. Sondern mit dem "alten Daten", die Du dir auf die Platte geschaufelt hast.

Hast Du mal versucht, nach dem Post ein Refresh aufzurufen, um den Datenbestand neu aus der DB zu laden?

[Edit]Ich habe das mal mit den Query-Kompo realisiert und da hat ein öffnen und schließen - besser - neu neue Abfrage die aktuellen Daten aus der DB gezogen.[/Edit]

muenster 19. Mai 2005 07:18

Re: Paradox im Netz akzualisiert nur bei Neustart des Progra
 
Hallo,

bei mir wars TTable.Active, gesetzt bei Programmaufruf. Danach erfolgt auf dem Client keine Aktualisierung. Ist bei TQuery im übrigen genauso. Lösung wäre bei Aufruf der Komponente TTable.Active auf true setzen oder eine Query ausführen. Bei mir wurde nach dem ersten setzen von TQuery.Active auf true auch keine Aktualisierung mehr durchgeführt obwohl ich beim Schließen des Forms wieder auf false gesetzt habe.

Jasocul 19. Mai 2005 08:13

Re: Paradox im Netz akzualisiert nur bei Neustart des Progra
 
Nach dem Post hilft ein FlushBuffers des DataSets. Die Daten werden nämlich gepuffert und nicht sofort in die Tabelle geschrieben. Bei einer Einzeplatz-Anwendung merkst du da nichts von, außer das Programm stürzt ab. Dann ist die DB im Nirvana. Im Netzbetrieb solltest du das unbedingt machen!

Siggi 19. Mai 2005 22:17

Re: Paradox im Netz akzualisiert nur bei Neustart des Progra
 
Hallo zusammen,

danke für Eure Tipps.

habe mir jetzt wie folgt geholfen:

1. für alle TTable im AfterPost ein FlushBuffers eingebaut und zusätzlich im jeweils anderen Client probiert, ob Schließen und Öffnen der TTAbles diese aktualisiert. Das hat aber nicht gereicht, der jeweils andere Client hat die Änderungen immer erst nach Benden und neu Starten der Applikation mitbekommen. Also habe ich...
2. Eine TDatabase-Komponente ins Datenmodul aufgenommen.
3. Im Datenmodul eine Procedure RefreshDatabase(Table:TTable) erzeugt. Diese setzt TDataBase.Connected auf false und sofort wieder true und öffnet dann alle TTables (es sind nur 5) neu. Vorher merkt sie sich mit GetBookmark zur übergebeben TTable den aktuellen Record und ruft am Ende den mit getBookmark gemerkten Datensatz wieder auf.
4. in jeder Form habe ich jetzt einen "Aktualisieren"-Schalter der Refreshdatabase aufruft und zusätzlich wird in OnActivate diese Refresh-Routine aufgerufen.

Das ist sicherlich nicht unbedingt die sauberste Art und Weise :oops: , aber es funktioniert.

Nach dieser Aktion bin ich erst recht überzeugt, dass ich gleich von Anfang an lieber eine richtige Datenbank und TQuerys mit SQL hätte verwenden sollen, dann wäre das jetzt viel einfacher gewesen. Aber es soll ja immer erst mal nur "ein ganz kleines reines Desktop-Projekt" sein - und dann kommen plötzlich die hunderttausend Zusatzanforderungen :roll: ....

na ja: Es läuft jetzt erst mal und die Umstellung ist ja schon in Arbeit.

Also vielen Dank und vielleicht hilft mein Lösungsweg ja dem Einen der Anderen der diesen Thread später liest.

... und wenn Jemand einen Vorschlag hat, wie ich das oben geschilderte Rumgewurschtel noch vereinfachen kann - immer her damit :)

Gruß,
Siggi


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