![]() |
Live Bindings Clientdataset <-> zu mehreren Komponenten
Ich versuche mich gerade mit XE7 in die neuen Möglichkeiten einzuarbeiten, die die Live Bindings bieten.
Momentan versuche ich mich an einem kleinen Datenbankprojekt. Ich habe ein TClientDataset, welches in einem Datenbankformular platziert ist. Auf die Daten greife ich über ein zweites Formular zu. Dazu habe ich die einzelnen Datenfelder Über den Livebindingsdesigner mit den Datenfeldern verknüpft. Die BindSource und ein BindNavigator liegen ebenfalls mit auf dem Eingabeformular. Funktioniert alles so weit ausgezeichnet. Jetzt will ich die Daten zusätzlich in Tabellenform darstellen und editieren können. Dafür habe ich ein TMSFMXGrid ins Formular gepackt und im Livebindings-Designer dieses ebenfalls mit der BindSource verbunden (* <--> *). Funktioniert auch. Ich kann Daten im Gitter ändern, und auch im Gitter mit dem BindNavigator navigieren. Problem ist jetzt, die Änderungen, die ich im Gitter ausführe werden nicht in die Editfelder übernommen. Nach dem Beenden der Anwendung und Neustart sind die Daten, die ich im Grid geändert habe wieder weg. Ändere ich Daten über die Edit-Felder, werden diese dauerhaft in die Datenbank übernommen. Habe mich schon dumm und dämlich gesucht, muss ich noch irgend eine Funktion aufrufen, die die Daten des TMSFMXGrids in die Datenbank zurückschreibt? |
AW: Live Bindings Clientdataset <-> zu mehreren Komponenten
Geht es, wenn du nur das Grid an die DataSource bindest?
Eventuell gibt es im Grid keinen Rückkanal ins DataSet, welcher das Schreiben der Datem übernimmt. :gruebel: Hast du schon bei TMS nachgefragt? |
AW: Live Bindings Clientdataset <-> zu mehreren Komponenten
Ich habe mal versuchsweise eine zweite BindSource nur mit dem Grid verbunden. Das Verhalten ist identisch. Ich kann die Daten im Grid ändern aber nach einem Programmneustart sind die geänderten Daten weg.
Dann habe ich noch versucht ClientdtDaset.ApplyUpdates aufzurufen. Dann bekomme ich die Meldung "fehlender Datenprovider oder Datenpaket". Das Clientdataset hat aber den richtigen Filename.? Am Anfang hatte ich ein StringGrid an statt des TMS-Grids. Der Eigenschaft Filename des ClientDataSets hatte ich im Objektinspektor fest den Pfad und den Dateinamen meiner Testdatei zugewiesen und diese beim Programmstart geändert. Da hatte ich das Gleiche Verhalten. Nachdem ich im Objektinspektor die Eigenschaft auf '' gesetzt habe ging es dann komischerweise.? Bei TMS habe ich noch nicht nachgefragt. Gruß BlackGuest |
AW: Live Bindings Clientdataset <-> zu mehreren Komponenten
Liste der Anhänge anzeigen (Anzahl: 1)
Da du ja keinen Source zeigen möchtest - ist wohl zu geheim - hier mal ein kleines Beispielprojekt mit einem ClientDataSet, Navigator, Grid und Edit-Feldern - so wie du das beschrieben hast.
|
AW: Live Bindings Clientdataset <-> zu mehreren Komponenten
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für das Beispiel.
Geheim ist da nichts, gibt nur nicht viel an Source. Gut, hätte vielleicht trotzdem Sinn gemacht. Mein Programm sieht eigentlich genau so aus wie das Beispiel. Ich habe das Beispiel mal modifiziert und ein TMSFMXGrid mit reingepackt. Ergibt genau das gleiche Verhalten. Ändere ich was im Grid oder in den Editfeldern, werden die Änderungen in allen drei Controls angezeigt. Ändere ich was im TMSFMXGrid, wird die Änderung nur da angezeigt und nach einem Neustart sind die Änderungen weg. Scheint also doch irgend eine Einstellung oder ein Bug im TMSFMXGrid zu sein, wobei ich eher ersteres vermute. Das modifizierte Beispiel habe ich mal angehängt. Gruß BlackGuest |
AW: Live Bindings Clientdataset <-> zu mehreren Komponenten
Zitat:
Denn anscheinend hat das ja vorher nicht funktioniert. |
AW: Live Bindings Clientdataset <-> zu mehreren Komponenten
Ja, es funktioniert. Genau so wie es soll.:-D
Allerdings nicht, wenn ich zusätzlich ein TMSFMXGrid verwende. Siehe Anhang von meinem letzten Post. Gruß BlackGuest |
AW: Live Bindings Clientdataset <-> zu mehreren Komponenten
Die Antwort von TMS war bis jetzt nicht gerade sehr vielversprechend. Es wird wohl schwer sein das nachzuvollziehen, da wohl einiges umgeworfen wurde(von XE5 auf XE6 und auch auf XE7).
Das von TMS mitgelieferte Beispiel (nach Installation unter ...\TMS Pack for FireMonkey Demos\Grid LiveBindings) funktioniert bei mir auch nicht. Genau das Gleiche Fehlerbild. Ich habe das TMS Grid angedacht, da ich in dem Gitter ein paar Comboboxen für die Eingabe vordefinierter Werte benötige. Die "alte" Variante, dass ich einfach über die Eingabezelle eine Combobox einblende funktioniert nicht mehr, da ich keine Möglichkeit gefunden habe, wie ich bei dem Firemonkey Grid die Position der aktuell selektierten Zelle ermittle. Wenn ich es richtig verstanden habe ist die TGrid-Componente aber auch nur ein Container, in dem ich beliebige Controls unterbringen kann. Gibt es dazu irgendwo ein Beispiel? Gruß BlackGuest |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:34 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-2025 by Thomas Breitkreuz