[ERLEDIGT] InMemory-Datensatz anlegen - BufDataset

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Benutzeravatar
Zvoni
Beiträge: 651
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

[ERLEDIGT] InMemory-Datensatz anlegen - BufDataset

Beitrag von Zvoni »

Hallo zusammen,

jetzt brauche ich Hilfe.
Hab noch nie ein TBufDataset direkt nutzen müssen

Szenario:
Ich habe ein DBGrid mit darunter liegendem DataSet.
Dieses Dataset/DBGrid zeigt eine Pivot-Tabelle an.
Da ich die Werte in einem TChart als Linien-Series darstellen soll, habe ich gedacht, ein InMemory BufDataset zu erzeugen, welches nur die Datenspalten hat.
Heisst: Erste Spalte hat den Titel der Datenreihe, die Werte der Datenreihe kommen in den folgenden Spalten, wobei die Spaltennamen der Daten später im Chart als X-Achsen-Beschriftungen dienen sollen


Die Fields/FieldDefs hinzuzufügen (Setze FieldName und Datentyp) ist ja einfach, aber wie bekomme ich die Daten jetzt da reingeklopft?
Mache ich ein BufDS.Append heisst es "DS ist nicht aktiv"
Mache ich vorher ein BufDS.Open reklamiert er "Feld Blabla nicht gefunden"

Wat nu?
Oder ist TBufDataset das falsche Mittel?
Zuletzt geändert von Zvoni am Mi 15. Apr 2026, 13:58, insgesamt 1-mal geändert.
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Sieben
Beiträge: 300
Registriert: Mo 24. Aug 2020, 14:16
OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
CPU-Target: i386

Re: InMemory-Datensatz anlegen - BufDataset

Beitrag von Sieben »

Hast du nach den FieldDefs und vor dem Open ein CreateDataset? Danach - nach CreateDataset und Open - sollte sich das Ding wie ein ganz normaler Dataset verwenden lassen, also auch was Operationen wie Append und Delete etc betrifft. Und ja, TBufDataset ist schon der richtige Kandidat.

Benutzeravatar
Zvoni
Beiträge: 651
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: InMemory-Datensatz anlegen - BufDataset

Beitrag von Zvoni »

Sieben hat geschrieben: Mi 15. Apr 2026, 12:44 Hast du nach den FieldDefs und vor dem Open ein CreateDataset? Danach - nach CreateDataset und Open - sollte sich das Ding wie ein ganz normaler Dataset verwenden lassen, also auch was Operationen wie Append und Delete etc betrifft. Und ja, TBufDataset ist schon der richtige Kandidat.
OCH MENNO.

*groan*

Danke! Erledigt
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

wp_xyz
Beiträge: 5419
Registriert: Fr 8. Apr 2011, 09:01

Re: [ERLEDIGT] InMemory-Datensatz anlegen - BufDataset

Beitrag von wp_xyz »

Zvoni hat geschrieben: Mi 15. Apr 2026, 11:52 Ich habe ein DBGrid mit darunter liegendem DataSet.
Dieses Dataset/DBGrid zeigt eine Pivot-Tabelle an.
[...]
Oder ist TBufDataset das falsche Mittel?
Verstehe ich richtig, dass du die Pivot-Tabelle schon in einem Dataset hast? Warum brauchst du dann noch den BufDataset? Im Prinzip zwar richtig, weil TDbChartSource extrem ineffiziert ist und wahrscheinlich eine Serververbindung lahmlegt. Und ob ein Bufdataset viel hilft, weiß ich nicht. Ich würde stattdessen den Dataset an den Anfang setzen, Record für record durchlaufen und die benötigten Werte in die Series (oder eine TListChartSource) kopieren.

Benutzeravatar
Zvoni
Beiträge: 651
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: [ERLEDIGT] InMemory-Datensatz anlegen - BufDataset

Beitrag von Zvoni »

wp_xyz hat geschrieben: Mi 15. Apr 2026, 16:25
Zvoni hat geschrieben: Mi 15. Apr 2026, 11:52 Ich habe ein DBGrid mit darunter liegendem DataSet.
Dieses Dataset/DBGrid zeigt eine Pivot-Tabelle an.
[...]
Oder ist TBufDataset das falsche Mittel?
Verstehe ich richtig, dass du die Pivot-Tabelle schon in einem Dataset hast? Warum brauchst du dann noch den BufDataset? Im Prinzip zwar richtig, weil TDbChartSource extrem ineffiziert ist und wahrscheinlich eine Serververbindung lahmlegt. Und ob ein Bufdataset viel hilft, weiß ich nicht. Ich würde stattdessen den Dataset an den Anfang setzen, Record für record durchlaufen und die benötigten Werte in die Series (oder eine TListChartSource) kopieren.
Danke für deine Antwort.
Die Pivot-Tabelle hat zwei zusätzliche Spalten, und ich kämpfe eben damit, dass es mir die ganze Zeit "zu viele Spalten" in den Chart geschrieben hat, und mit dem BufDataset habe ich das jetzt zwar aufwendig umgangen, aber es funzt
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Antworten