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.