Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Livebindungs & FireDAC Update record mit Firemonkey (https://www.delphipraxis.net/185680-livebindungs-firedac-update-record-mit-firemonkey.html)

Rollo62 29. Jun 2015 14:05

Datenbank: Sqlite3 • Version: 3 • Zugriff über: FireDAC

Livebindungs & FireDAC Update record mit Firemonkey
 
Hallo zusammen,

ich habe mir die Livebindings für ein CrossPlatform Projekt angeschaut.
Kenne mich mit LiveBindings + DB nicht besonders aus, aber das Demo
\Object Pascal\LiveBindings\bindgridlink\fmx\BindGridLinkF MXProject.dproj
funktioniert noch wie erwartet:

- Livebindings setzt alle Controls
- wenn man im Grid clickt folgen alle Controls nach
- ich habe auch die BindSourceDB1 gecheckt, deren DataSet steht dann wirklich auf der richtigen ReNo.

Also, alles so wie erwartet.

Wenn ich jetzt aber das Ganze bei mir in einem CrossPlatform Projekt benutze funktioniert es nicht ganz so:

- Ich benutze FireDAC mit einer Query und einer kleinen lokalen Sqlite3 Datenbank
- Die Query ist ein einfacher SELECT * from Table, der wird auch angezeigt
- OK: Livebindings setzt alle Controls (bei mit einen TListView)

- Aber wenn ich den aktuell ausgewählten Record updaten möchte geht das nicht.
In der Query, und im BindSourceDB1.Dataset (was ja dasgeleiche sein sollte) steht immer 1,
es folgt also anscheinend in der ListView nicht den User-Clicks.

Ist das so gewollt, bei StringGrid gehts, bei ListView nicht ??!!

Oder liegt es an FireDAC, bei ClientDataset gehts, bei FDQuery nicht ??

Wie ist es denn in diesem Livebindings-Fall gedacht eine Query upzudaten ?

Ich finde leider kaum Info dazu, und Livebindings ist wohl eher exotisch.
Vielleicht hat das ja trotzdem jemand mal benutzt ?

Rollo

Rollo62 29. Jun 2015 14:50

AW: Livebindungs & FireDAC Update record mit Firemonkey
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo zusammen,

ich habe mal ein kleines Demo gemacht.

Es sieht so aus als würde StringList die DB unterstützen, und die ListView nicht.
Verstehe ich hier etwas falsch, oder habe ich vergessen irgendwo einen Haken zu setzen ?
In den Sqlite-Parametern muss LockingMode von Exclusive auf Normal http://docwiki.embarcadero.com/RADSt..._%28FireDAC%29,
aber was sonst ?

Im Anhang ein Bild von dem Test, Clicke ich rechts ins Stringgrid werden alle controls upgedatet,
nur das ListView nicht.
Clicke ich ins ListView wird gar nichts upgedatet ?

Also ist das so gewollt (by design, nicht by user) ?
Kenne mich mit LiveBinding, FireDAC nur peripher aus ...

Ausserdem muss ich Close/Open machen damit das ListView Änderungen mitbekommt ?

Rollo

Rollo62 30. Jun 2015 16:13

AW: Livebindungs & FireDAC Update record mit Firemonkey
 
Liste der Anhänge anzeigen (Anzahl: 1)
Sooo viele User und noch keiner hat was mit Livebindings, ListView und FireDAC gemacht ?

Das ist doch der bevorzugte Weg von Embarcadero, ich hörs an jeder Ecke zwitschern.
Warum funktioniert das dann nicht auf Anhieb ?

Vielleicht has der SelectedValue im Bild unten was damit zu tun ?
Der ist zwar Bidirektional, scheint aber weder uni- noch bi zu funktionieren.
Es wird nur einmal bei Open der ganze Table geladen, das wars dann.

Ich kann doch nicht der Erste sein der sich darüber mal Gedanken macht ...

Soll ichs nun nach dem Embarcadero-Rezept einsetzen, oder lieber selber frickeln ?
Würde ich ja machen, aber im Moment sieht die Emba-Lösung nach mehr Arbeit aus als wenn ich
die paar Daten eben von Hand programmiere.

Rollo

Edelfix 30. Jun 2015 18:13

AW: Livebindungs & FireDAC Update record mit Firemonkey
 
Ich glaube nicht das Livebindings das richtige Mittel für die Arbeit mit Datenbanken ist.
Damit es zu keinen unvorhersehbaren Situationen kommt solltest du die DB Funktionen selber erstellen. Also SQL Befehle selber schreiben. Dann landet auch alles an der richtigen Stelle. Ich kenne niemanden der Livebindings nutzt.

mkinzler 30. Jun 2015 19:38

AW: Livebindungs & FireDAC Update record mit Firemonkey
 
da scheinst gar nicht zu Wissen was LiveBindings sindm denn mit dem datenzugriff haben diese nichts zu tun, sondern mit der Bindung von Anzeigecontrols mit Daten ( z.B. Datenbanken oder auch andere Datenquellen. man kann auch Controls an andere Controls binden.

Rollo62 30. Jun 2015 20:46

AW: Livebindungs & FireDAC Update record mit Firemonkey
 
Hallo,

ja, ich habe auch ein schlechtes Gefühl dabei.
Aber Embarcadero scheint ja diese Livebindings sehr zu promoten, und das wird vielleicht in
Zukunft der Weg statt DataSources mit DataComponents zu Verbinden.
Keine Demo ohne PrototypeBindSource :-)

Jedenfalls wenn es mit LiveBindings nicht gemacht wird bleibt nur der steinige Weg zu Fuss
was CrossPlatform mit ListViews etwas erschwert.
Das kann es doch auch nicht sein für einfache Tabellen und Listen.

Immerhin, das StringGrid scheint Emba ja als Exempel so gebaut zu haben wie man sich das vorstellt,
aber dann müssen sie doch auch alle wichtigen Komponenten (ListView) kurzfristig folgen lassen.

Im Prinzip denke ich das Livebindings eine gute Sache sein können, mich stört daran nur das es
sofot sehr unüberschaubar wird, und irgendwie im Source nicht gut/gar nicht umgesetzt werden kann.
Nur mit dem LiveBindings Designer: darauf soll ich mich verlassen ?
Als RunTime definierte Regeln könnte ich mich dafür schon eher begeistern, ohne die ganze IDE-Magic.

Ich hätte gehofft das jemand sich mit dem Thema tiefer beschäftigt hat, und vielleicht mehr
aus den LiveBindings rausholt als ich mir bis jetzt vorstellen kann.

Für mein aktuelles Projekt werde ich mich dann leider gegen LiveBindings entscheiden, ich würde
ja gerne den Emba-Weg mitgehen, wenn das nicht nur ein Luftballon wäre.

Rollo


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:31 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