Entwickler-Ecke
Datenbanken - Wie muß man bei "OnFilterRecord" mit Platzhaltern arbeiten?
der Berliner - Mo 30.01.06 17:27
Titel: Wie muß man bei "OnFilterRecord" mit Platzhaltern arbeiten?
Hallo zusammen...
Ich möchte z.B. in einer DB nach Datensätzen Filtern in denen im Namen die Buchstaben "an" vorkommen.
Folgende Routine :
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TFormMain.TableSpielerFilterRecord(DataSet: TDataSet; var Accept: Boolean); begin Accept:=Dataset['Spielername']='*an*'; end; |
Table1.Filtered ist auf True gesetzt.
Jetzt wird mir aber in einem DBGrid gar kein Datenstz angezeigt.
Wenn ich den Namen auschreibe ... "Andre" dann zeigt er mir diesen Datensatz an.
Kann man bei OnFilterRecord überhaupt mit Platzhaltern arbeiten ?
Oder hab ich nen Fehler in der Schreibweise?
Vielen Dank im Vorraus
Der berliner
afk - Mo 30.01.06 20:19
Ich würde es mal so versuchen:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TFormMain.TableSpielerFilterRecord(DataSet: TDataSet; var Accept: Boolean); begin Accept:=(Pos('an', Dataset['Spielername']) > 0); end; |
Gruß Axel
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt
der Berliner - Mo 30.01.06 20:41
[quote="
afk"]Ich würde es mal so versuchen:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TFormMain.TableSpielerFilterRecord(DataSet: TDataSet; var Accept: Boolean); begin Accept:=(Pos('an', Dataset['Spielername']) > 0); end; |
Danke für den Versuch...
So zeigt das DBGrid nix an
so Ähnlich hatte ichs schon..
Es sollten ja jetzt die Namen ANdre oder AlexANder gefunden werden..
Dann heisst es jetzt wohl weiter suchen und Probieren
Gruß Andre
afk - Di 31.01.06 01:56
Das ist seltsam, zumindest der Alexander sollte so zu finden sein, da der Pos dabei eine 6 zurückliefern müßte. Für den Andre muß das Ganze noch durch "Pos('an', LowerCase(Dataset['Spielername']))" Case-insensitive gemacht werden.
Kann es sein, das in der Eigenschaft "Filter" von dem TDataset auch noch ein Filterkriterium steht und deswegen eine leere Datenmenge geliefert wird ?
Gruß Axel
der Berliner - Di 31.01.06 16:48
Danke Für die Hilfe Leute.
Habe das Prob jetzt folgendermaßen gelöst (mit Hilfe :wink: )
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TFormMain.TableSpielerFilterRecord(DataSet: TDataSet; var Accept: Boolean); begin Accept:=(Pos(AnsiUpperCase('An'), AnsiUpperCase(Dataset.FieldByName('Spielername').AsString))>0); end; |
So funzt es.
gruß Andre
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!