Entwickler-Ecke

Datenbanken - Filter mit like


Nomis - Do 22.08.02 18:30
Titel: Filter mit like
Hänge mal wieder etwas

und zwar funktioniert folgende Zeile ohne Probleme


Quelltext
1:
Table3.Filter := combobox3.text+' =' + QuotedStr(edit7.text);                    


wenn ich diese jedoch Ändere in


Quelltext
1:
Table3.Filter := combobox3.text+' Like' + QuotedStr(edit7.text+'%');                    


ändere sagt er mir, daß die Operation nicht anwendbar ist hat da jemand schonmal Erfahrung mit gemacht??


hitstec - Do 22.08.02 19:59

Versuchs damit:


Quelltext
1:
Table3.Filter := combobox3.text+' Like '#39+edit7.text+'%'#39);                    


Nomis - Do 22.08.02 21:03

Funktioniert leider nicht. Kann das irgendwie mit meiner Paradox7 Datenbank zu tun haben?


Renegade - Do 22.08.02 21:05

Moin erstmal!

Und wenn du es so versuchst?


Quelltext
1:
Table3.Filter := combobox3.text+' Like' + QuotedStr(edit7.text)+'%';                    


Gruß Renegade


hitstec - Do 22.08.02 21:08

Auf jedenfall muss ein Leerzeichen nach Like stehen, im Klartext muss es so aussehen:


Quelltext
1:
 ... LIKE 'text%'                    


Renegade - Do 22.08.02 21:26

Nomis hat folgendes geschrieben:
Funktioniert leider nicht. Kann das irgendwie mit meiner Paradox7 Datenbank zu tun haben?


Ich weiß nicht wie aufwendig das für dich wäre mal ne andere db zur probe zu testen. cih würds machen denn eigentlich sollte dein code funzen.

Gruß Renegade


Nomis - Do 22.08.02 22:01

Renegade hat folgendes geschrieben:



Table3.Filter := combobox3.text+' Like' + QuotedStr(edit7.text)+'%';



Da gibt er mir Lusigerweise keine Felermeldung allerdings muss ich erst den gesamten Ausdruch in edit 7 eingeben bevor er mir in dem DBGrid was anzeigt troz like und % hast du da eine erklährung für??
Eigentlich möchte ich schon nach dem ersten Buchstaben alle einträge die den Buchstaben als erstes haben anzeigen lassen


Renegade - Fr 23.08.02 00:09

In welchem ereignis hast du den code denn untergebracht?


Delta7 - Fr 23.08.02 01:06

Hallo Zusammen,

wenn Du das so schreibst
Table3.Filter := combobox3.text+' Like' + QuotedStr(edit7.text)+'%';
dann steht im SQL String das letzte ' VOR dem %.

Versuch doch mal

Quelltext
1:
2:
Table3.Filter := combobox3.text+' Like ''' + edit7.text+'%'''; 
//(Ungetestet).


Allerdings bin ich mir nicht ganz sicher, ob eine like 'irgendwas%' Syntax als Filter funktioniert.

Probier mal statt der Table eine query.

Quelltext
1:
2:
3:
4:
  query1.close;  //optional
  query1.sql.clear;
  query1.sql.add('Select * from TABELLE where '+combobox3.text+ ' like '''+edit7.text+'%''';  //Tabelle ist natürlich der entsprechende Name
  query1.open;  //Ab hier solltest Du dein Ergebnis sehen


Allerdings auch ungetestet :lol:

Viel Spass


Nomis - Fr 23.08.02 06:24

Renegade hat folgendes geschrieben:
In welchem ereignis hast du den code denn untergebracht?




Habe es in die Oncange von edit7 geschrieben hier mal der ganze Code :



Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TForm1.Edit7Change(Sender: TObject);
begin
if form6.lesen = true then
  begin
    if (combobox3.Text = 'Nr') or (combobox3.text = 'Buch') then
       begin
        edit7.maxlength := 4;
        Table3.filtered := true;
    Table3.Filter := combobox3.text+' Like ' + QuotedStr(edit7.text+'%'); 
        panel16.Visible := true;
        end
      else
        begin
        edit7.maxlength := 20 ;
        Table3.filtered := true;
     Table3.Filter := combobox3.text+' Like ' + QuotedStr(edit7.text+'%'); 
        panel16.Visible := true;
      end;

  end;
end;


Wie gesagt dabei sgt er mir Operation nicht anwendbar