Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TMemDataset (https://www.delphipraxis.net/187425-tmemdataset.html)

Sugar 28. Nov 2015 11:31

Delphi-Version: 7

TMemDataset
 
Hallo,

ich habe ein etwas älteres Delphi (7) und ein MemDataset (V2.15). Ich lese darin Daten aus einem Excel-Sheet ein. In der Anwendung werden diese Daten bearbeitet. Dazu muss ich die Daten Filtern. Allerdings bereitet mir das Filtern Probleme. Ein nacktes FILTER = 'XYZ' plus FILTERED:=TRUE reagiert nicht. Im Ereignis OnFilterRecord kann ich dann jedoch filtern, wenn ich dort das Feld und den gewünschten Inhalt abfrage
Code:
procedure TForm1.xlsTblFilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
  xlsTblAP.AsString := 'AP-0400';
end;
Das bringt mich aber niciht weiter, ich müsste mehr Filterkriterien für ein Feld angeben und zusärtlich weitere Felder in den Filter aufnehmen. Hat jemand sowas schonmal umgesetzt und kann mir etwas auf die Sprünge helfen?


Gruß
Heiko

Perlsau 28. Nov 2015 11:57

AW: TMemDataset
 
Soweit mir bekannt muß man im Dataset-Filter-Property ebenfalls "das Feld und den gewünschten Inhalt abfragen":
Delphi-Quellcode:
MemDataSet.Filter := 'Wert = 1043'
oder bei Strings und anderen zu quotenden Typen:

Delphi-Quellcode:
MemDataSet.Filter := 'VarSpalte = ' + QuotedStr(MeinString);
Mehrere Abfragen trennst du dabei mit einem AND:

Delphi-Quellcode:
MemDataSet.Filter := 'Wert = 1043 and VarSpalte = ' + QuotedStr(MeinString);

Sugar 28. Nov 2015 13:47

AW: TMemDataset
 
Zitat:

Zitat von Perlsau (Beitrag 1322771)
Soweit mir bekannt muß man im Dataset-Filter-Property ebenfalls "das Feld und den gewünschten Inhalt abfragen":
Delphi-Quellcode:
MemDataSet.Filter := 'Wert = 1043'
oder bei Strings und anderen zu quotenden Typen:

Delphi-Quellcode:
MemDataSet.Filter := 'VarSpalte = ' + QuotedStr(MeinString);
Mehrere Abfragen trennst du dabei mit einem AND:

Delphi-Quellcode:
MemDataSet.Filter := 'Wert = 1043 and VarSpalte = ' + QuotedStr(MeinString);

Wir reden von verschiedenen Komponenten..

nahpets 28. Nov 2015 14:05

AW: TMemDataset
 
Zitat:

Zitat von Sugar
Wir reden von verschiedenen Komponenten..

ja, aber auch von den gleichen Attributen, die (nach meinem Kenntnisstand) bei allen von TDataSet abgeleiteten Komponenten über die gleiche Syntax zum Setzen von Filtern verfügen.

Mal ausprobiert, ob der Vorschlag von Perlsau funktioniert?

Woher soll denn bei einem Filter
Delphi-Quellcode:
FILTER = 'XYZ'
die Komponente wissen, was hier XYZ sein soll. Die Angabe der entsprechenden Spalte könnte da ja durchaus hilfreich sein.

Perlsau 28. Nov 2015 14:14

AW: TMemDataset
 
Zitat:

Zitat von Sugar (Beitrag 1322775)
Wir reden von verschiedenen Komponenten..

Na und? Ist das bei TMemDataset etwa anders als bei TClientDataset? Alle Datasets sind Nachkommen von TCustomClientDataSet, das wiederum ein Nachkomme von TDataset ist. TClientDataset ist auch nur Memorydataset.
Das Objekt TClientDataSet repräsentiert eine Datenmenge im Arbeitsspeicher.
"Ein nacktes FILTER = 'XYZ' plus FILTERED:=TRUE" stellt keinen gültigen Filterstring dar, denn es fehlt die Spalte, in der das XYZ gesucht werden soll.
Was mich aber am brennendsten interessieren würde: Woher stammt die Komponente TMemDataset? Ist die nativ bei Delphi7 dabei?


Wenn er mir nicht glaubt, vielleicht glaubt er ja nahpets?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:08 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