Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Beispiel Datenbank Anwendung in Firemonkey - zur Diskussion (https://www.delphipraxis.net/188754-beispiel-datenbank-anwendung-firemonkey-zur-diskussion.html)

marcgeldon 4. Apr 2016 18:20

Beispiel Datenbank Anwendung in Firemonkey - zur Diskussion
 
Ich möchte hier eine beispielhafte kleine Datenbank Anwendung (Delphi 10 Seattle Update 1 / Firemonkey) zur Diskussion stellen.

Zu finden unter:
> https://github.com/marcgeldon/Delphi-Experiments
> https://github.com/marcgeldon/Delphi...ive/master.zip

Gerne würde ich Verbesserungsvorschläge, Ideen, Bugfixes, Feature-Wünsche usw. hier sammeln und diskutieren. Herauskommen soll zum Schluss ein Beispiel für eine Datenbankanwendung in Delphi in Kombination mit Firemonkey.

Daraus könnte später ein How-To entstehen usw. usw.

Als Beispieldaten bzw. zur Verwaltung bin ich jetzt mal von "Blutdruck Werten" ausgegangen. Mir fiel im ersten Moment nichts anderes ein. :P

Also ich bin gespannt auf Eure Rückmeldungen ...

Crosspost: http://forum.delphi-treff.de/index.p...103#post445103

jobo 5. Apr 2016 08:43

AW: Beispiel Datenbank Anwendung in Firemonkey - zur Diskussion
 
Vielleicht kannst Du noch etwas mehr zum Zweck des Systems schreiben und was hier Schwerpunkte sein sollen. "Blutdruckwerte verwalten" und vielleicht mal ein Tutorial lockt mich noch nicht so sehr, das zu laden und zu installieren (abgesehen davon, dass ich keine passende Lizenz hab), geht vielleicht anderen ähnlich.

marcgeldon 5. Apr 2016 12:59

AW: Beispiel Datenbank Anwendung in Firemonkey - zur Diskussion
 
Hallo jobo...

"Blutdruckwerte" sind natürlich nur beispielhaft. Es geht mir nicht explizit darum diese zu Verwalten. Aber da wir ja mit einer Datenbankanwendung experimentieren mussten ja irgendwelche Beispieldaten her.

Konkret möchte ich erörtern / ausprobieren / testen:

- wie kann man schnell eine Datenbankanwendung im aktuellen Delphi mit aktuellen Bordmitteln aufbauen (Firemonkey, LiveBindings usw.). Bei einer lokalen Datenbank gehören dazu: Datenbank laden, speichern, usw. - zum Schluss soll quasi eine Art Template / Vorlage entstehen

- das ganze System auf andere Datenbanken zu erweitern (evtl. anderes "lokales DataSet" als ClientDataSet), Firebird Embedded (für mehrere Tabellen und relationale Verbindungen usw.) - ClientDataSet wurde nur genommen, da es standardmäßig installiert ist. Man muss also keine weiteren Komponenten installieren.

- Erweiterung der Standardfunktionalität für Client-Server Datenbanksysteme (hier geht es nicht mehr um Datenbank laden, speichern usw., sondern hier geht es um Verbindungen, Anmeldungen, die entsprechenden Dialoge usw.)

- wie lässt sich der Code sauber trennen und testbar machen? Ich habe versucht hier eine Art MVC/MVP >> ANSATZ << einzubringen. Die Form (View) hat nur das mindesteste an Code, um alle Funktionalität kümmert sich der MainController (Controller). Das Datenmodul enthält die gesamte Datenbank und Businesslogik (Model). Ein Komponente als Datenbankcontroller kümmert sich um die ganze "Drum-herum-Funktionalität" (wie Datenbank laden, speichern usw.)

stahli 5. Apr 2016 13:38

AW: Beispiel Datenbank Anwendung in Firemonkey - zur Diskussion
 
Die Idee finde ich gut.
Ich hatte auch mal ähnliches vorgeschlagen: www.delphipraxis.net/1227843-post13.html

Es müssen ja keine sinnvollen Daten sein.
Man kann ja bestimmte Datenstrukturen (Master/Detail) mit Testdaten füllen und die dann weiter bearbeiten.

Interessant ist aus meiner Sicht vor allem, wie die Bindung der GUI an große Datenmengen funktioniert.

Ich habe zwar LB und FMX für mich abgehakt, aber vielleicht hat sich die Funktionalität ja inzwischen verbessert.

marcgeldon 6. Apr 2016 08:06

AW: Beispiel Datenbank Anwendung in Firemonkey - zur Diskussion
 
wir ziehen gerade ein größeres VCL Projekt auf Firemonkey und setzen es neu auf.

Fazit: wir haben einige "kleinere" Bugs gefunden und auch im neuen Quality Portal von EMB gemeldet (schnelle Reaktionszeiten übrigens).

Die schnellen Reaktionszeiten seitens EMB und der Einstieg von Idera lassen uns hoffen, dass das eine runde Sache wird (Firemonkey). Im Vergleich zur VCL ist es natürlich noch in den Kinderschuhen (oder in der Pubertät?).

Aber unterhält man sich mit anderen Entwicklern, haben die mit anderen Frameworks (Xamarin usw.) dieselben Problemchen.

Rollo62 6. Apr 2016 11:29

AW: Beispiel Datenbank Anwendung in Firemonkey - zur Diskussion
 
Hallo Marcgeldon,

Sehr schön, ich experimentiere auch immer noch mit diesen Basics, und habe die gleichen Goals.

Ich möchte aber gerne Sqlite verwenden statt ClientDataSet, weil damit direkt auch CrossPlattform möglich ist,
und weil es nicht im Memory läuft (so verstehe ich ClientDataSet als SingleDB Lösung).

Für eine InMemoryDb habe ich guter Erfahrungen mit FdMemTable gemacht, aber auf Mobile würde ich InMemory DB
nicht nutzen weil es dann zu Out-Of-Memory Problemen kommen könnte.

Ich möchte wahrscheinlich genau wie Du, ein einfaches Template, was man schnell hinbauen kann
und was dann am Besten noch schnell auf C/S oder Rest erweiterbar/umschaltbar ist.

Jedenfalls habe ich mit Sqlite und FdQuery im Moment noch Schwierigkeiten mit Bitmaps und AutoInc.

Auf jeden Fall finde ich deinen Ansatz nicht schlecht, ich wollte aber noch versuchen die Module zu Trennen durch
- RegisterXxxx die Elemente bekannt zu machen, ohne Units einzubinden
- per TMessageManager die Module untereinander kommunizieren lassen

Aber wie gesagt, so rund ist mein Konzept da noch nicht, auch weil ich das nur wenig Zeit für Tests habe.
Jedenfalls möchte ich gern auf allen Platformen mit dem gleichen Code arbeiten können ohne Kopfschwerzen.
Ich bleibe aber dran, und melde mich falls es etwas Neues gibt.

Rollo

Rollo62 7. Apr 2016 13:45

AW: Beispiel Datenbank Anwendung in Firemonkey - zur Diskussion
 
Liste der Anhänge anzeigen (Anzahl: 5)
Hier habe ich nochmal zumn Thema einen abgespecken Versuch von mir, da habe ich noch schnell versucht deinen ClientDataSet Ansatz mit reinzubringen (Table/Query via CDS).

Ich möchte aber eigentlich Sqlite mit FdQuery benutzen, mit FdTable scheint es am Besten/Einfachsten zu funktionieren.
Aber ich muss immer irgendw Hand an legen und korrigieren, es funktioniert nicht OutOfTheBox.

Die reine CientDataSet Variante funktioniert von Marc ja nicht schlecht, Fmx scheint das zu bevorzugen,
deshalb habe ich noch versucht FdTable/FdQuery via CDS und DataSetProvider anzusprechen,
aber das löst es auch nicht auf (da kommen die AutoInc Felder nicht mir rüber).

Immer muss noch ein Refresh gemacht werden damit das StringGrid sich wieder richtig einstellt, ich weiss
es gibt auch noch 1000 andere Varianten wie man Datenbanken machen kann.

Aber zum orginalen Thread: Was ist eigentlich der kleinste gemeinsame Nenner ?

Wie soll man eine simple, flache DB mit den FireDac Komponenten (oder meinetwegen anders) anlegen
damit alles automatisch richtig funktioniert (keine Zeile Code: wie angepriesen) ?
Wie gesagt CDS möchte zumindestesn ich nicht, weil InMemory DB.
Welchen Schalter muss man noch umlegen ?

Leider fehlen mir die FireDac Sourcen, ich habe zwar Rx10 Pro mit FireDac AddOn, habe das aber noch nie richtig installieren können so das ich dort etwas debuggen könnte.
Aber bestimmt gibt es hier genug Datenbankexperten die soetwas mit Links lösen können.

Die Lösng von Marc sieht sehr gut aus, scheint so aber nur mit CDS zu funktionieren.

Im Anhang sind noch einige Bilder zu Fehlerfällen, auch unter Win und OSX gibt es schon verschiedene Fehler,
iOS Android habe ich noch gar nicht probiert, wenn schon Win nicht sauber läuft.
Da stehe ich wohl komplett auf dem Schlauch :pale:

Rollo

Rollo62 7. Apr 2016 14:43

AW: Beispiel Datenbank Anwendung in Firemonkey - zur Diskussion
 
Das hier ist schon etwas älter, aber auch interessant.

Rollo

Rollo62 7. Apr 2016 15:20

AW: Beispiel Datenbank Anwendung in Firemonkey - zur Diskussion
 
Dies hier ist auch interessant ...

Und das ist auch interessant mit LiveBindings.

Viele Wege führen zum Ziel Fmx/Db7LiveBindings, aber was ist jetzt wohl der Richtig(ste) Ansatz ?

Ich fände es schon lohnenswert hier mal zusammen ein, oder meherere Art(en) BoilerPlate Templates für Fmx zu bauen,
damit man schneller zu Potte kommt.
Das Beipiel unten von Marc ist ja schonmal ein sehr guter Ausgangspunkt.
Im Moment quälen sich doch anscheinend viele mit den gleichen Problemen rum.

Rollo


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