Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DataSet.Filter funktioniert nicht (https://www.delphipraxis.net/95346-dataset-filter-funktioniert-nicht.html)

PASST 5. Jul 2007 11:15

Datenbank: kbmMemTable • Version: 4.08b • Zugriff über: andere

DataSet.Filter funktioniert nicht
 
Hallo allerseits,

ich versuche jetzt schon seit einer Stunde die Daten in einer MemoryTable zu filtern. Als MemoryTable verwende ich kbmMemTable . Die Tabelle ist brav mit Daten gefüllt, aber wenn ich den folgenden Filter anwende, werde mir immer alle Daten angezeigt.
Delphi-Quellcode:
  with memTab do
  begin
    Filter := 'firma="SBH"';
    FilterOptions := [foCaseInsensitive];
    filtered := true;
  end;
Was mache ich falsch?

Gruß
Peter

mkinzler 5. Jul 2007 11:19

Re: DataSet.Filter funktioniert nicht
 
Delphi-Quellcode:
Filter := 'firma=' + QuotedStr('SBH');

PASST 5. Jul 2007 11:23

Re: DataSet.Filter funktioniert nicht
 
Das hilft leider auch nicht.

Ich lasse mir Daten des memTab in einem Grid anzeigen. Wenn ich den Filter aktiviere, springt der Satzzeiger auf den ersten Record, aber es werden keine Sätze gefiltert.

PASST 6. Jul 2007 08:04

Re: DataSet.Filter funktioniert nicht
 
Ich möchte was grundsätzliches zu DataSet.Filtern fragen. Ich meine irgendwann in der Hilfe gelesen zu haben, dass der Einsatz von Filtern nur unter der Bedingung funktioniert, wenn gleichzeitig ein entsprechend aufgebautet Index vorhanden ist. Hängt das vielleicht von meinem Datenbank- bzw. Tabellentyp (dBase, Paradox, ...) ab? Und kbmMemTable verhält sich entsprechend?

PASST 6. Jul 2007 08:37

Re: DataSet.Filter funktioniert nicht
 
Juchu, et lüppt ;) Aber etwas anders als bisher erwähnt. Anscheinend mag das MemoryTable nicht die Filter-Eigenschaft, stattdessen muss ich mit dem Ereignis OnFilterRecord arbeiten. Das schaut dann so aus:
Delphi-Quellcode:
  ...
  with memTab do
  begin
    filtered := true; // Jetzt greift das Ereignis memTab.OnFilterRecord
    Refresh;
  end;
  ...

procedure TForm1.memTabFilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
  memTab.fieldbyname('firma').asstring := 'SBH';
end;


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