![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: Dataset
MemoryDataset + CalcFields
Hallo,
Habe im meinem Programm ein DBGrid über ein Dataset mit einer Tabelle der Datenbank verbunden um eine Anzahl verschiedener Vorgänge anzuzeigen. Da das DBGrid über das Dataset ständig mit der Datenbank verbunden ist, wenn der Anwender in dieser Ansicht bleibt und zum Mittag geht, hatte ich ein MemoryDataset gefunden, das die Daten in Speicher kopiert und das DBGrid darauf zugreifen kann. Es fuktioniert auch weitgehend, jedoch ein CalcField für die Anzeige der Satznummern im DBGrid funktioniert nicht. In dem normalem Dataset hatte ich folgenden Routine dafür:
Delphi-Quellcode:
Das Gleiche jedoch im MemoryDataset:
procedure TDataModule5.IBDataSetGridPlannungCalcFields(DataSet: TDataSet);
begin DataSet.FieldValues['NUMMER'] := DataSet.RecNo; end;
Delphi-Quellcode:
funktioniert nicht.
procedure TDataModule5.MemoryDataGridPlannungCalcFields(DataSet: TDataSet);
begin // MemoryDataGridPlannung.FieldByName('NUMMER').AsInteger := IBDataSetGridPlannung.FieldByName('NUMMER').AsInteger; //MemoryDataGridPlannung.FieldValues['NUMMER'] := DataSet.RecNo;//MemoryDataGridPlannung.DataSet.RecNo; DataSet.FieldValues['NUMMER'] := DataSet.RecNo; end; Hat bitte Jemand eine Idee, wie ich es machen kann? Danke, Luckner |
AW: MemoryDataset + CalcFields
Hmm..
Ist das Field 'Nummer' nach dem kopieren ins MemoryDataset überhaupt noch ein CalcField? ODer wird es dadurch zu einem DataField? |
AW: MemoryDataset + CalcFields
Das Field "Nummer" aus dem Dataset wird in das MemoryDataSet nicht übernommen. Nur die "echtem" Felder aus der Tabelle.
|
AW: MemoryDataset + CalcFields
Hmm..
Dann kann
Delphi-Quellcode:
ja nicht funktionieren, wenn das 'Nummer' Field nicht vorhanden ist.
procedure TDataModule5.MemoryDataGridPlannungCalcFields(DataSet: TDataSet);
begin DataSet.FieldValues['NUMMER'] := DataSet.RecNo; end; Leider kenne ich das MemoryDataSet nicht.. Gibt es da FieldDefs und kannst Du dort ein CalcField hinzufügen? |
AW: MemoryDataset + CalcFields
Wit welchen Komponenetn greift Du auf die Datenbank zu? Welches Memory-DataSet?
|
AW: MemoryDataset + CalcFields
Wie ist eigentlich funktioniert nicht zu verstehen?
Wird das Feld angezeigt, aber es bekommt keinen oder nicht den erwarteten Wert? Gibt es zur Laufzeit eine Exception? Wenn ja, welche? Hat der Compiler etwas gegen die Anweisung? Lässt sich DataSet.RecNo sonstirgendwie ausgeben? Wenn ja, enthält es den erwarteten Wert? Nicht alle DataSets liefern einen Wert für DataSet.RecordCount. Hat Dein DataSet eventuell ein Problem mit dem Liefern von DataSet.RecNo? |
AW: MemoryDataset + CalcFields
Das Feld NUMMER habe ich in dem MemoryDataset erzeugt als Calcfield. Auf die Datenbak greife ich über ein IBDataset zu. Das JvMemoryDataset (Jedi) greift aud das IBDataset zu und liest die Daten ein. Das funktioniert recht gut. Aber ich möchte im DBGrid auch die Durchnummerierung der Datensätze haben. Mit IBDataset funktioniert das. Wenn ich das gleiche mit dem MemoraDataset mache, dann steht im DBGrid 20-mal (oder mehr) die Nr: 1. Die Datensätze ebenfalls 20-mal die selben. Ohne das Calcfield alles OK. Auch die Reihenfolge ist korrekt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz