Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ClientDataset Filtern (https://www.delphipraxis.net/72791-clientdataset-filtern.html)

Lemi2006 6. Jul 2006 22:20

Datenbank: Interbase • Version: 7.5 • Zugriff über: ADO

ClientDataset Filtern
 
Ich möchte gerne in einem ClientDataSet mit "Filter" Datensätze mit einer bestimmten
Zeichenkette an einer beliebigen Stelle filtern, also analog zu

SQL-Code:
SELECT * FROM [tabelle]
WHERE [spalte] LIKE '%[text]%'
bisher konnte ich aber nur nach Zeichenketten, die am Anfang stehen filtern

Delphi-Quellcode:

CDS.Filter := '[spalte]=''[text]*''';
CDS.Filtered := true;
mit

Delphi-Quellcode:

CDS.Filter := '[spalte]=''*[text]*''';
CDS.Filtered := true;
klappt es leider nicht.

Gibt es da eine Lösung?

chaosben 7. Jul 2006 06:15

Re: ClientDataset Filtern
 
Hi Alexander,

probiers doch mal so:
SQL-Code:
Spalte like '%SUCHMICH%'

xSkaschY 7. Jul 2006 06:22

Re: ClientDataset Filtern
 
Zitat:

Zitat von Lemi2006
bisher konnte ich aber nur nach Zeichenketten, die am Anfang stehen filtern

Delphi-Quellcode:

CDS.Filter := '[spalte]=''[text]*''';
CDS.Filtered := true;

würde dann so ausschauen

SQL-Code:
Spalte like 'SUCHMICH%'

Lemi2006 7. Jul 2006 15:00

Re: ClientDataset Filtern
 
Spitze! Klappt alles. :lol:
Vielen dank. War mir nähmlich nicht sicher ob ich beim
Filtern auch mit 'LIKE' arbeiten kann.

The_Doomed 8. Mai 2008 12:01

Re: ClientDataset Filtern
 
wie kann man dies bei einem Datasetfilter erreichen der aus einer xml ließt ?
also My Base - habs bisher so

Delphi-Quellcode:
database.ClientDataSet1.Filter:='ausgabename=''searchfield.Text*''';
wenn ich das aber auf like ändere brint er mir ne fehlermeldung
weil er dann ni checkt in welcher spalte er suchen soll

The_Doomed 9. Mai 2008 16:58

Re: ClientDataset Filtern
 
push :duck:

mr2 15. Mai 2008 23:17

Re: ClientDataset Filtern
 
Du musst den Filter-String zusammenbauen:

Delphi-Quellcode:
database.ClientDataSet1.Filtered := False;
database.ClientDataSet1.Filter := Format('ausgabename = %s', [QuotedStr(searchfield.Text + '*')]);
database.ClientDataSet1.Filtered := True;
mr2

The_Doomed 16. Mai 2008 07:38

Re: ClientDataset Filtern
 
das klappt auf jeden fall schon mal gut mein prob is aber immer
noch wie ich es hinbekomme dass er nicht immer von den ersten buchstaben ausgeht
sondern wenn ich ein wort "banane" habe (z.b ^^) und dann "ane" er das trotzdem dalässt
und nicht wegfiltert

mr2 17. Mai 2008 22:16

Re: ClientDataset Filtern
 
dann musst Du like verwenden:

Delphi-Quellcode:
database.ClientDataSet1.Filtered := False;
database.ClientDataSet1.Filter := Format('ausgabename like %s', [QuotedStr('%' + searchfield.Text + '%')]);
database.ClientDataSet1.Filtered := True;
mr2

The_Doomed 17. Mai 2008 23:30

Re: ClientDataset Filtern
 
ah ja genau das wars super danke sehr
:bounce1: :bouncing4: :bounce1: :bouncing4:

.....................................

Thomas F 11. Sep 2008 22:30

Re: ClientDataset Filtern
 
Zitat:

Zitat von mr2
Du musst den Filter-String zusammenbauen:

Delphi-Quellcode:
database.ClientDataSet1.Filtered := False;
database.ClientDataSet1.Filter := Format('ausgabename = %s', [QuotedStr(searchfield.Text + '*')]);
database.ClientDataSet1.Filtered := True;
mr2

Ich hab dasselbe Problem

Wie kann ich jetzt noch einen oder zwei..drei.. weitere Filter hinzufügen.

Delphi-Quellcode:
if RadioButton1.checked =true then
begin
database.ClientDataSet1.Filtered := False;
database.ClientDataSet1.Filter := 'Feld1=''12345''';
database.ClientDataSet1.Filtered := True;
end;

if RadioButton2.checked =true then
begin
database.ClientDataSet1.Filtered := False;
database.ClientDataSet1.Filter := 'Feld2=''6789''';
database.ClientDataSet1.Filtered := True;
end;
Funktioniert bei mir nicht, filtert immer nur nach einem Filter. :wall:

renekr 14. Okt 2008 13:46

Re: ClientDataset Filtern
 
Hallo,

Ich bin soeben auch an dem Filter Thema dran aber mit Boolean ( Bit ) Werte im SQL Server.

Ich habe es so gelöst.
Delphi-Quellcode:
case Checkbox86.State of
    cbChecked: Option_GSM := 'not (GSM = 0)';
    cbUnChecked: Option_GSM := '(GSM = 0)';
  end;

Aber nun meine Frage:
Ich habe alles Probiert um einen True Wert raus zu Filtern.
Mit -1 1 und 2 und auch als String mit 'Wahr' und 'true' ohne Erfolg.

Nur die not 0 Methode ging .
Kann mir da jemand Klarheit geben?

Danke

nahpets 14. Okt 2008 15:18

Re: ClientDataset Filtern
 
Hallo,
ist zwar schon 'ne Weile her aber...

Zitat:

Zitat von Thomas F
Funktioniert bei mir nicht, filtert immer nur nach einem Filter. :wall:

Delphi-Quellcode:
if RadioButton1.checked =true then
begin
database.ClientDataSet1.Filtered := False;
database.ClientDataSet1.Filter := 'Feld1=''12345''';
database.ClientDataSet1.Filtered := True;
end;

if RadioButton2.checked =true then
begin
database.ClientDataSet1.Filtered := False;
database.ClientDataSet1.Filter := 'Feld2=''6789''';
database.ClientDataSet1.Filtered := True;
end;
so könnte es gehen:
Delphi-Quellcode:
Var
  sFilter : String;
...

database.ClientDataSet1.Filtered := False;
if RadioButton1.checked then begin
  sFilter := 'Feld1=''12345''';
end;

if RadioButton2.checked then begin
  if sFilter <> '' then sFilter := sFilter + ' or ';
  sFilter := sFilter + 'Feld2=''6789''';
end;

if sFilter <> '' then begin
  database.ClientDataSet1.Filter  := sFilter;
  database.ClientDataSet1.Filtered := True;
end;

nahpets 14. Okt 2008 15:20

Re: ClientDataset Filtern
 
Hallo,
Zitat:

Zitat von renekr
Ich bin soeben auch an dem Filter Thema dran aber mit Boolean ( Bit ) Werte im SQL Server.

Ich habe es so gelöst.
Delphi-Quellcode:
case Checkbox86.State of
    cbChecked: Option_GSM := 'not (GSM = 0)';
    cbUnChecked: Option_GSM := '(GSM = 0)';
  end;

Aber nun meine Frage:
Ich habe alles Probiert um einen True Wert raus zu Filtern.
Mit -1 1 und 2 und auch als String mit 'Wahr' und 'true' ohne Erfolg.

Nur die not 0 Methode ging .
Kann mir da jemand Klarheit geben?

Danke

kurz und knapp:
Zitat:

False = 0, alles andere = True.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:04 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 by Thomas Breitkreuz