AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Andere DBGrids nach Tabellenupdate aktualisieren
Thema durchsuchen
Ansicht
Themen-Optionen

Andere DBGrids nach Tabellenupdate aktualisieren

Ein Thema von Andreas H. · begonnen am 29. Dez 2006 · letzter Beitrag vom 1. Jan 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#1

Andere DBGrids nach Tabellenupdate aktualisieren

  Alt 29. Dez 2006, 07:37
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

Gruß Andreas
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Andere DBGrids nach Tabellenupdate aktualisieren

  Alt 29. Dez 2006, 07:45
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Andere DBGrids nach Tabellenupdate aktualisieren

  Alt 29. Dez 2006, 07:52
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Andere DBGrids nach Tabellenupdate aktualisieren

  Alt 29. Dez 2006, 07:56
Zitat:
Und da mehrere MDI-Childs offen sein können, scheidet ja ein zentrale DataSource aus.
Wenn die Child alle Teil der selben Programminstanz sind reicht eine.
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Andere DBGrids nach Tabellenupdate aktualisieren

  Alt 29. Dez 2006, 08:11
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
  Mit Zitat antworten Zitat
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Andere DBGrids nach Tabellenupdate aktualisieren

  Alt 29. Dez 2006, 12:12
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

Ich meld mich nochmal...

Gruß Andreas
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Andere DBGrids nach Tabellenupdate aktualisieren

  Alt 29. Dez 2006, 12:23
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...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Andere DBGrids nach Tabellenupdate aktualisieren

  Alt 29. Dez 2006, 12:50
Soso,

Zitat:
TClientDataset + TProvider
Das ist ja genau das, was ich suche, oder? Ich habe mich schon immer gefragt, wofür man die braucht

Aber wofür ist denn der Provider genau? Meinst Du TDataSetProvider?

Ich probiers mal!

Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Andere DBGrids nach Tabellenupdate aktualisieren

  Alt 29. Dez 2006, 15:25
Hm,

ich kriegs nicht hin

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
  Mit Zitat antworten Zitat
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Andere DBGrids nach Tabellenupdate aktualisieren

  Alt 29. Dez 2006, 17:42
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:33 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