Marcel van Beuzekom
Een query gebruik je per definitie om gegevens op te halen. Maar na het ophalen wil
de gebruiker de data ook manipuleren. De gebruiker wil de data in een lijst zien die hij
snel kan sorteren op verschillende kolommen, en uiteraard wil hij de data ook wijzigen.
Een query component is hiervoor al snel te beperkt. Een query is readonly en om de
data te sorteren moet de query opnieuw worden uitgevoerd, met een trage performance als
gevolg.
De BDE en later ook Interbase Express gaven ons al mogelijkheden om met een query
ook data te wijzigen, maar deze oplossingen zijn geen van allen perfect. Een BDE live
query is alleen te gebruiken zolang er geen join wordt gebruikt en is bovendien vrij
traag, BDE cached updates maken tijdelijke Paradox bestanden aan waarin de data wordt
opgeslagen (in het ergste geval op het netwerk!) en Interbase Express Cached updates biedt
weer geen algemene oplossing voor alle databases. De ClientDataSet biedt de mogelijkheid
om data op te halen, sorteren, wijzigen en weer terug op de server op te slaan.
ClientDataSet
ClientDataSet is een component, gemaakt voor het bekijken en wijzigen van data in het
geheugen. Omdat ClientDataSet erft van TDataSet, heeft het component alle
mogelijkheden die een gewone dataset ook heeft: bladeren in data, zoeken, data wijzigen en
alle data-aware componenten gebruiken. Maar ClientDataSet heeft ook verschillende
mogelijkheden om data te sorteren en te groeperen. Omdat zowel het zoeken als het sorteren
allemaal in het geheugen gebeurt is het razendsnel. Pas als de wijzigingen weer moeten
worden opgeslagen hebben we een server of schijf nodig.
Dat opslaan kan de ClientDataSet zelf, maar in zeer beperkte mate. Het opslaan is
alleen mogelijk in één bestand en dat bestand wordt ook altijd helemaal opgeslagen .
Zelfs als je maar één regel hebt gewijzigd wordt dus het hele bestand opgeslagen. Ook
het inlezen gebeurt weer met het hele bestand. Los van de performance is dit ook niet
gewenst in een multi-user omgeving, er kan immers maar één gebruiker tegelijk met het
bestand werken. Toch is ClientDataSet juist voor een multi-user omgeving gemaakt. Voor het
inlezen en opslaan van de data heeft hij alleen een tweede component nodig: een
DataSetProvider.
DataSetprovider
Een DataSetProvider is eigenlijk niets meer dan een doorgeefluik tussen een
ClientDataSet en een 'echte' dataset, bijvoorbeeld een Query. De DataSetProvider laat de
data ophalen door de Query, vat deze data samen in een pakketje en stuurt dat pakketje
naar de ClientDataSet.
Inlezen data van een database naar een ClientDataSet
Bedankt voor de reacties.
Ik heb de waarde van de handle bekeken net na het openen en voor en na het sluiten, maar deze blijft in zowel 32bit
Laten we beginnen met vast te stellen dat de aanbieder van deze header file(s) niet voor niets een disclaimer op zijn website heeft staan
Wat je laat zien komt letterlijk uit de unit D2XXUnit.pas. Die zou door de ontwikkelaar moeten zijn getest.
Als je hier dus moeilijkheden mee hebt,
Voor het aansturen van wat hardware gebruik ik de FTDI library om via USB te communiceren.
In 32 bit werkt dit prima.
Ook 64bit
Met RTF-code een tabel zetten op RichMemo
Hallo allemaal,
Dubbeld Today, 11:00Ik zet via RTF-code een tabel op Richmemo. De tabel bestaat uit één kolom. Deze kolom
heeft een breedte van X cm