Autor Beitrag
der Berliner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 417

Win Xp Home
delphi 2005
BeitragVerfasst: Mo 30.01.06 17:27 
Hallo zusammen...
Ich möchte z.B. in einer DB nach Datensätzen Filtern in denen im Namen die Buchstaben "an" vorkommen.

Folgende Routine :
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 102

Win 2K, Win XP
Delphi 2006 Arch., Delphi 6 Ent., MS-SQL 2005 & 2000
BeitragVerfasst: Mo 30.01.06 20:19 
Ich würde es mal so versuchen:

ausblenden 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 user profile iconraziel: Code- durch Delphi-Tags ersetzt
der Berliner Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 417

Win Xp Home
delphi 2005
BeitragVerfasst: Mo 30.01.06 20:41 
[quote="user profile iconafk"]Ich würde es mal so versuchen:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 102

Win 2K, Win XP
Delphi 2006 Arch., Delphi 6 Ent., MS-SQL 2005 & 2000
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 417

Win Xp Home
delphi 2005
BeitragVerfasst: Di 31.01.06 16:48 
Danke Für die Hilfe Leute.

Habe das Prob jetzt folgendermaßen gelöst (mit Hilfe :wink: )
ausblenden 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