AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Paradox im Netz akzualisiert nur bei Neustart des Programms
Thema durchsuchen
Ansicht
Themen-Optionen

Paradox im Netz akzualisiert nur bei Neustart des Programms

Ein Thema von Siggi · begonnen am 18. Mai 2005 · letzter Beitrag vom 19. Mai 2005
Antwort Antwort
Siggi

Registriert seit: 19. Jun 2004
Ort: Lollar
52 Beiträge
 
Delphi 11 Alexandria
 
#1

Paradox im Netz akzualisiert nur bei Neustart des Programms

  Alt 18. Mai 2005, 23:05
Datenbank: Paradox • Zugriff über: BDE
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
  Mit Zitat antworten Zitat
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#2

Re: Paradox im Netz akzualisiert nur bei Neustart des Progra

  Alt 19. Mai 2005, 07:24
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]
Gruß

Albi
  Mit Zitat antworten Zitat
muenster

Registriert seit: 9. Apr 2005
Ort: Hamburg
41 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Paradox im Netz akzualisiert nur bei Neustart des Progra

  Alt 19. Mai 2005, 08:18
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.
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.355 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Paradox im Netz akzualisiert nur bei Neustart des Progra

  Alt 19. Mai 2005, 09:13
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!
Peter
  Mit Zitat antworten Zitat
Siggi

Registriert seit: 19. Jun 2004
Ort: Lollar
52 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Paradox im Netz akzualisiert nur bei Neustart des Progra

  Alt 19. Mai 2005, 23:17
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 , 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 ....

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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:29 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