Einzelnen Beitrag anzeigen

TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.211 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Umgang mit nested ClientDataSet Logik

  Alt 24. Mär 2022, 08:19
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.
Miniaturansicht angehängter Grafiken
cds.jpg  
  Mit Zitat antworten Zitat