AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MemoryDataset + CalcFields

Ein Thema von Luckner · begonnen am 22. Mär 2016 · letzter Beitrag vom 22. Mär 2016
Antwort Antwort
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#1

MemoryDataset + CalcFields

  Alt 22. Mär 2016, 13:00
Datenbank: Firebird • Version: 2.1 • Zugriff über: Dataset
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:
procedure TDataModule5.IBDataSetGridPlannungCalcFields(DataSet: TDataSet);
begin
  DataSet.FieldValues['NUMMER'] := DataSet.RecNo;
end;
Das Gleiche jedoch im MemoryDataset:
Delphi-Quellcode:
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;
funktioniert nicht.
Hat bitte Jemand eine Idee, wie ich es machen kann?
Danke, Luckner
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#2

AW: MemoryDataset + CalcFields

  Alt 22. Mär 2016, 13:44
Hmm..

Ist das Field 'Nummer' nach dem kopieren ins MemoryDataset überhaupt noch ein CalcField?
ODer wird es dadurch zu einem DataField?
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: MemoryDataset + CalcFields

  Alt 22. Mär 2016, 13:55
Das Field "Nummer" aus dem Dataset wird in das MemoryDataSet nicht übernommen. Nur die "echtem" Felder aus der Tabelle.
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#4

AW: MemoryDataset + CalcFields

  Alt 22. Mär 2016, 15:11
Hmm..

Dann kann

Delphi-Quellcode:
procedure TDataModule5.MemoryDataGridPlannungCalcFields(DataSet: TDataSet);
begin
  DataSet.FieldValues['NUMMER'] := DataSet.RecNo;
end;
ja nicht funktionieren, wenn das 'Nummer' Field nicht vorhanden ist.

Leider kenne ich das MemoryDataSet nicht..
Gibt es da FieldDefs und kannst Du dort ein CalcField hinzufügen?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: MemoryDataset + CalcFields

  Alt 22. Mär 2016, 16:01
Wit welchen Komponenetn greift Du auf die Datenbank zu? Welches Memory-DataSet?
Markus Kinzler
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: MemoryDataset + CalcFields

  Alt 22. Mär 2016, 16:06
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?
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: MemoryDataset + CalcFields

  Alt 22. Mär 2016, 16:33
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz