Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Umgang mit nested ClientDataSet Logik (https://www.delphipraxis.net/210245-umgang-mit-nested-clientdataset-logik.html)

KodeZwerg 23. Mär 2022 10:39

Datenbank: CDS • Version: Delphi 10.3 • Zugriff über: MidasLib

Umgang mit nested ClientDataSet Logik
 
Guten Tag liebe Gemeinde!

NestedDataSets in ClientDataSets < Das diente mir als inspiration.

Ich schildere mal was ich vor habe.

Ich plane 2 "Master-Tabellen" zu haben die in einem Formular seperat verwaltet werden aber nicht direkt verbunden sind.
Tabelle 1 = "Kunden name"
Tabelle 2 = "Verkäufer name"

In einem weiteren Formular möchte ich so etwas realisieren und frage mich ob das die Richtige herangehensweise ist:
Per ComboBox werden alle "Verkäufer" gelistet. Wenn man nun einen Auswählt möchte ich eine...
Tabelle 3 = "eingabe Artikel" "eingabe Anzahl" "auswahl nested Kunden" "eingabe Sonstiges"
Tabelle 4 = "nested Tabelle 3" "eingabe Boolean (default FALSE)" (Tabelle ist unsichtbar)
...generieren.

Nochmals in einem weiteren Formular möchte ich Tabelle 4 auflisten lassen was alles generiert wurde bzw wo noch "FALSE" drinnen steht mit der Möglichkeit "eingabe Boolean" zu bearbeiten.

Wäre das so von der Logik her korrekt oder denke ich da falsch?

(Das Buch von Cary habe ich bestellt aber bin jetzt schon ganz aufgeregt und probiere alles mögliche aus)

newIndy 24. Mär 2022 06:29

AW: Umgang mit nested ClientDataSet Logik
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von KodeZwerg (Beitrag 1503829)
Guten Tag liebe Gemeinde!

NestedDataSets in ClientDataSets < Das diente mir als inspiration.

(Das Buch von Cary habe ich bestellt aber bin jetzt schon ganz aufgeregt und probiere alles mögliche aus)


Sehr gut.

Die NestedDataSets erhöhen zwar den Schwierigkeitsgrad, ohne sie geht es aber fast nicht.
Zum weiteren Einstieg hilft dir vielleicht

https://edn.embarcadero.com/article/29825

und weil der Link zum Beispielprojekt nicht funktioniert, habe ich es angehängt '18744_videolibrary_complex_clientdataset_structur e_demo'.

Viel Spaß beim austesten

TigerLilly 24. Mär 2022 07:19

AW: Umgang mit nested ClientDataSet Logik
 
Liste der Anhänge anzeigen (Anzahl: 1)
ClientDataSets sind auch nur (InMemory)DataSets. Das, was sie auszeichnet, ist, dass sie ihre Daten über einen Provider von woanders her (3-tier) beziehen können. CDS werden/wurden aber gerne mißbraucht, um Daten lokal im Speicher bearbeiten zu können, ohne jeden Datensatz sofort in die zugrundeliegende DB posten zu müssen. Stichwort CachedUpdates.

NestedDataSets kommen erst ins Spiel, wenn ein CDS via Provider an eine Query oder Table angebunden wird, die ihrerseits ChildTabellen via deren DataSource angebunden haben. Wenn man CDS ohne provider, also mit lokalen Daten benutzt, gibt es keine NetsedDatasets, sondern nur die üblichen Master/Detail Beziehungen.

Siehe Bild, das verdeutlicht die Struktur. Hier gibt es eine Datenbank, auf die greifen die qMaterial und qQuant zu. qQuant ist via DAtasource (und im SQL) Child von qMaster. Der provider linkt zur qMaster + das cdsMAterial ruft über den Provider alle Daten inkl. dem Child als nestedDataset ab. Das cdsQuant linkt dann zum NEstedDataset. Die Daten der Datenbank wandern also als ein einziges Paket über den Provider zum CDS. Im CDS können die daten bearbeitet werden, inkl post, delete, insert etc + dann mit AllplyUpdates über den Provider wieder zu den Queries und dann zur DB geschoben werden.

Also: Nicht verwechseln. CDS kann auschließlich lokal, so eine MemTable nutzen oder mit Provider zu 3-tier, uU degeniert wenn alle Schichten im selben Programm liegen.


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