![]() |
Andere DBGrids nach Tabellenupdate aktualisieren
Hallo,
folgende Situation: MySQL-Datenbank mit ZEOS angebunden mehrere MDIChildForms mit DBGrids (JEDI VCL) und TZTables auf die gleiche DB-Tabelle Problem: Änderungen an der Tabelle im einen Fenster werden nicht im zweiten Fenster angezeigt. Das ist hauptsächlich deshalb hässlich, wenn ich an einer Tabelle geändert habe, die in einer anderen Form als Detail-Tabelle verwendet wird und ich einen geänderten Datensatz einfügen möchte. Muss ich denn echt jede Tabelle (in jedem Childfenster) explizit updaten oder gibts da ne Schraube, an der ich drehen kann? Ich hoffe ihr habt mich verstanden :gruebel: Gruß Andreas |
Re: Andere DBGrids nach Tabellenupdate aktualisieren
Ich kenne die JEDI-Komponenten nicht, aber grundsätzlich sind Datasets nicht synchronisiert.
Versuche, nur ein einziges Dataset pro Tabelle zu verwenden. Die einzelnen Sichten und Tabellenverknüpfungen erstellst Du zur Designzeit. Wenn Du dann das eine Dataset neu lädst, hast Du damit ja per se aktuelle Daten in allen Fenstern. Sonst bleibt dir nur, alle Queries (Datasets) neu zu laden. Das lässt sich manchmal nicht umgehen, ist aber natürlich der Tod jeder Performanceoptimierung. Aber wie schon gesagt, ich kenne die JEDI-VCL nicht. Kann ja sein, das die sich was haben einfallen lassen. Im Endeffekt wird es aber auf ein Neuladen aller abhängigen Queries hinauslaufen, und das das blöd ist, sagte ich ja bereits. |
Re: Andere DBGrids nach Tabellenupdate aktualisieren
Hallo,
es handelt sich (noch) nur um Tables, nicht um Queries. Und da die als Detailtabellen fungieren (1-n) muss ich wohl in den sauren Apfel beißen, oder? Und da mehrere MDI-Childs offen sein können, scheidet ja ein zentrale DataSource aus. Hat noch einer ne Idee? Gruß Andreas |
Re: Andere DBGrids nach Tabellenupdate aktualisieren
Zitat:
|
Re: Andere DBGrids nach Tabellenupdate aktualisieren
Hallo Andreas,
wenn du den "gleichen" DataSet mehrmals auf verschiedenen MDI-Child-Instanzen sitzen hast, dann solltest du überlegen, ob du den DataSet dort wegnehmen kannst. Einmal auf ein DataModule gezogen und auf den MDI-Child-Instanzen nur die DataSource mit dieser zentralen Table-Komponente verbunden ist viel wirtschaftlicher. Das gleiche gilt auch für Master-Detail-Beziehungen: Werden diese mehrfach "gleich" vorgehalten, dann ab damit auf das DataModule. Freundliche Grüße |
Re: Andere DBGrids nach Tabellenupdate aktualisieren
Ha,
dort waren sie und ich habe sie in die Forms verfrachtet, da ich für jede Form einen andere Filterbedingung habe (durch den Benutzer änderbar - dies ist der Sinn für mehrere Childs!) Ich glaube, ich muss mir die Sachen nochmal überlegen :gruebel: Ich meld mich nochmal... Gruß Andreas |
Re: Andere DBGrids nach Tabellenupdate aktualisieren
Hi
1. Möglichkeit: Die Child-spezifischen Filter setzt Du, sobald das Child sichtbar wird 2. Möglichkeit: Verwende TClientDataset + TProvider... Die TClientDatasets erzeugst Du für jedes Child-Fenster mit den entsprechenden Filtern. Einen TProvider verbindest du mit der 'Mastertabelle'. Die TClientdatasets verbindest Du alle zu dem TProvider. Wenn Du die Mastertabelle änderst, werden alle TClientDatasets mit geändert... |
Re: Andere DBGrids nach Tabellenupdate aktualisieren
Soso,
Zitat:
Aber wofür ist denn der Provider genau? Meinst Du TDataSetProvider? :gruebel: Ich probiers mal! Andreas |
Re: Andere DBGrids nach Tabellenupdate aktualisieren
Hm,
ich kriegs nicht hin :wall: Folgende Situation: Mainform: Table1 DatasetProvider1 mi DataSet:=Table1 ChildForm: ClientDataSet1 mit erstelltem DataSet und ProviderName:=MainForm->DataSetProvider1 Die Einrichtung des ClientDataset bekomme ich nicht hin. Entweder fehlt beim Zuweisen lokaler Daten die Eigenschaft DataSet odes es fehlt der DatenProvider oder das Datenpaket. Kannst Du mir weiterhelfen, alzaimar? Gruß Andreas |
Re: Andere DBGrids nach Tabellenupdate aktualisieren
Also,
wenn ClientDataSet und Provider in der ChildForm liegen, gehts. Das Aktualisieren der Datenbank muss man manuell mit ApplyUpdates erledigen, oder? Auch das Benachrichtigen der anderen Childs funktioniert noch nicht. Gibts da noch nen Trick? Gruß Andreas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz