![]() |
Re: Filterproblem mit TTable
Hi,
hier der Text:
Delphi-Quellcode:
Die anderen Filter rufe ich aus einem PopUp-Menü auf:
procedure TForm1.AdsTable1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin //if not AdsTable1.FieldByName('def3').IsNull then Accept := Form6.Match(VarToStr(DataSet['def3']),Form6.sMatch); end; procedure TForm6.Button1Click(Sender: TObject); begin sMatch := MatchStr(Edit1.Text); Form1.AdsTable1.Filtered := true; edit1.Text := ''; Close; end;
Delphi-Quellcode:
procedure TForm1.MenuItemClick(sender : TObject);
var s, g : string; begin with Sender as TMenuItem do if count = 0 then begin s := Caption; s := StringReplace(s,'&','',[rfReplaceAll]); g := parent.Caption; g := StringReplace(g,'&','',[rfReplaceAll]); if s = lng.GetValue('topitem') then ADSTable1.Filtered := False else if s = 'Special Filter' then Form6.Show else if s = lng.GetValue('nodeitem') then begin AdsTable1.Filter := 'node = "'+g+'"'; AdsTable1.Filtered := true; end else begin if g = '' then begin AdsTable1.Filter := 'node="'+s+'"'; AdsTable1.Filtered := true; end else begin AdsTable1.Filter := 'node = "'+g+'" .AND. tree="'+s+'"'; AdsTable1.Filtered := true; end; end; end; end; |
Re: Filterproblem mit TTable
Hallo Stefan,
bevor du den Filter neu setzt, solltest du Filtered auf False setzen. Und schau mal hier:
Delphi-Quellcode:
Gute Nacht
// s := Caption;
// s := StringReplace(s, '&', '', [rfReplaceAll]); s := Menus.StripHotKey(Caption); |
Re: Filterproblem mit TTable
Hallo,
habe jetzt jedesmal bevor der filter neu gesetzt wird fltered auf false gesetzt. Aber es geht immer noch durcheinander. Wird onfilterrecord bei jedem filtern aus- gelöst? Kann das der Fehler sein? |
Re: Filterproblem mit TTable
Hallo,
ich kann mir gar nichts darunter vorstellen, wenn du schreibst "Aber es geht immer noch durcheinander". Auch wüsste ich nicht, wie die Auswertung des Filterkriteriums im Ereignis OnFilterRecord() ein wechselndes Ergebnis liefern könnte, je nachdem wie oft die Routine durchlaufen wird. Ich fürchte du musst das alles etwas besser beschreiben, damit ich verstehe. Freundliche Grüße |
Re: Filterproblem mit TTable
Hi,
einmal geschieht ja eine Filterzuweisung durch das PopUpMenü. Unabhängig davon soll aber auch wenn der User es wünscht über eine andere Maske (im onfilterrecord) die Daten filtern können. Ich meine, dass die Daten zusammengewürfelt werden (onfilterrecord und der eigentliche filter). das geht soweit, bis ich gar nix mehr angezeigt bekomme. :gruebel: |
Re: Filterproblem mit TTable
Okay, verstehe.
Die Kombination der beiden Filtertechniken (OnFilterRecord() und Filter/ed) ist zulässig. Die entsprechende Hilfeseite in der Online Hilfe hast du sicher gelesen. Ich bin sicher, dass du den Fehler irgendwo in deinem Code stecken hast. Wenn du nicht weiter kommst, dann kannst du eine Demo erstellen mit der man dein Problem sehen kann. Fehler die ich reproduzieren kann, kann ich auch beseitigen - oder zumindest erklären. Freundliche Grüße |
Re: Filterproblem mit TTable
Hallo Marabu,
habe nochmal ein bischen rumprobiert und alles läuft einwandfrei. Es lag einfach daran, dass ich den Filter bzw. sMatch nicht an der richtigen Stelle zurückgesetzt hatte. Jetzt klappt alles einwandfrei! Besten Dank nochmal :-D |
Re: Filterproblem mit TTable
Hallo,
ich habe zu diesem alten Thema nochmal eine Frage: Im Moment suche ich ja so mit onfilterrecord():
Delphi-Quellcode:
Der übergebene String lautet dann z. B.: %2%45%
Accept := Match(VarToStr(DataSet['JAHRE']), sMatch);
Das Ergebnis ist dann z. B.: 123456 - also alles, was diese 3 Ziffern enthält. Nun die Frage: Ist das auch möglich, über eine oder-Verknüpfung zu suchen? also enthalten sein muss 2 oder 4 oder 5? (Mit einer Ziffer (%2%) geht das ja schon). Viele Grüße, Stefan Göppert |
Re: Filterproblem mit TTable
Hallo,
glaube ich nicht, dazu brauchst du dann ne Query. Heiko |
Re: Filterproblem mit TTable
Hallo,
eine Query kommt leider nicht in Frage. Bei normalen Filtern kann man doch auch eine oder-Verknüpfung für ein Feld einbauen? Irgendwie muss das doch gehen. Ich habe leider auch die Delphi-Hilfe nicht parat. Vielleicht kann mir jemand schreiben was sie zu onfilterrecord() sagt. Viele Grüße ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 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-2025 by Thomas Breitkreuz