AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Daten auf Clients aus Netzwerk-DB werden nicht aktualisiert
Thema durchsuchen
Ansicht
Themen-Optionen

Daten auf Clients aus Netzwerk-DB werden nicht aktualisiert

Ein Thema von BlueStarHH · begonnen am 1. Okt 2006 · letzter Beitrag vom 2. Okt 2006
Antwort Antwort
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
801 Beiträge
 
Delphi 11 Alexandria
 
#1

Daten auf Clients aus Netzwerk-DB werden nicht aktualisiert

  Alt 1. Okt 2006, 12:54
Datenbank: Firebird • Version: 1.5 • Zugriff über: TIBTable, TIBDatabase, IBX
Hallo!

Ich nutze in meinem Programm eine Firbirddatenbank. Diese liegt auf einem Server. Mein Programm verbindet sich nun mit der Datenbank auf diesem Server. In meinem Programm nutze ich eine TIBDatabase- verbunden einer mit IBTransaction-Komponente. Für die Tabelle eine TIBTable- mit einer TDataSource-Komponente. Die Daten werden in DBEdit-Feldern einem TDBGrid angezeigt. Wenn ich nun in meinem Programm einen neuen Datensatz mit Tabelle.Insert anlege und diesen mit Tabelle.Post speichere, ist dieser auf anderen Clients nicht sichtbar. Wenn ich den anderen Client beende und neu starte, zeigt er immer noch nicht den neuen Datensatz an. Ich muss den Client, auf dem der Datensatz erzeugt wurde, neu starte, damit er auf anderen Clients sichtbar wird. Mit Neustarten ist gemeint, dass das Programm neu gestartet wird. Das gleiche Problem besteht bei Änderungen an den Datensätzen.

Wie kann ich erreichen, dass Neue Datensätze/Änderungen sofort in die DB geschrieben werden? Und wie kann ich erreichen, dass diese Änderungen auch auf den anderen Clients ohne Neustart sichtbar werden?

Vielen Dank im Voraus!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Daten auf Clients aus Netzwerk-DB werden nicht aktualisi

  Alt 1. Okt 2006, 13:01
Wann commitest du die Transaktion?
Markus Kinzler
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
801 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Daten auf Clients aus Netzwerk-DB werden nicht aktualisi

  Alt 1. Okt 2006, 13:07
Zitat von mkinzler:
Wann commitest du die Transaktion?
Ich dachte das passiert automatisch? Ich habe leider noch nicht so viel Ahnung von Firebird, da ich gerade alles von Paradox nach Firebird umgestellt habe. Wann und wie muss ich denn committen? Nach jedem Aufruf von Post? Kann man das nicht irgendwo einstellen, dass er das automatisch macht? Sonst muss ich jetzt ja alle Aufrufe von Post suchen und danach ein Commit einfügen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Daten auf Clients aus Netzwerk-DB werden nicht aktualisi

  Alt 1. Okt 2006, 13:15
Du kannst die Transaktion so einstellen, daß er automatisch committed. Das ist aber nicht unbedingt gut, du stellst ja damit nur das Verhalten von Paradox her und verzichtest auf den Vorteil von Transaktionen.
Transaktion dienen dazu mehrere zusammenhängende Aktionen nach dem Alle-oder-Keine-Prinzip, d.h. entweder alle Vorgänge werden durchgeführt oder alle werden zurückgenommen.
Markus Kinzler
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hannover-Hainholz
801 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Daten auf Clients aus Netzwerk-DB werden nicht aktualisi

  Alt 2. Okt 2006, 11:20
Zitat von mkinzler:
Du kannst die Transaktion so einstellen, daß er automatisch committed.
Ich hab die Transaktion nun wie folgt eingestellt:
DefaultAction=TACommitRetaining
IdleTimer=1

Params:
read_committed
rec_version
nowait

Nun werden die Änderungen in die DB eingetragen, ohne dass ich den Client auf dem die Änderungen erfolgten, neustarten muss. Das ist schonmal gut. Aber was jetzt noch fehlt: Die Änderungen werden auf den anderen Clients nicht angezeigt. Ich muss auf den anderen Clients die App erst neustarten. Wie können die Änderungen in den anderen Clients automatisch angezeigt werden? Ich habe in den Clients ein DBGrid, das immer die aktuellen Stand der Datenbank anzeigen soll.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Daten auf Clients aus Netzwerk-DB werden nicht aktualisi

  Alt 2. Okt 2006, 11:22
Erzeuge beim Ändern einen Event und lasse die anderen Clients darauf reagieren ( Event-Alerter)
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#7

Re: Daten auf Clients aus Netzwerk-DB werden nicht aktualisi

  Alt 2. Okt 2006, 11:39
Das, oder die 'Quick&Dirty-Lösung': Du packst einen Timer dazu und lässt die DataSource an der die Grid hängt einfach alle N Sekunden refreshen. Das das ist tatsächlich etwas Dirty - wobei es schon okay ist wenn es sich hier wirklich um eine reine Datenanzeige handelt und Du Dir die Einarbeitung in die Events & Alerts auf Firebird für den Moment ersparen willst.

Dennoch lohnt es sich da einen Blick drauf zu werfen.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  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 17: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