Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DataSet Filtern (https://www.delphipraxis.net/155154-dataset-filtern.html)

WizoHulk 11. Okt 2010 12:43

Datenbank: SQL • Version: 1 • Zugriff über: ibExpert

DataSet Filtern
 
Hi Leute,
wie kann ich ein DbGrid Filtern, das er mir nur noch das anzeigt was ich in ein Editfeld schreibe.
ich hab eine Datenbank worüber ich die Anweisung gebe

Delphi-Quellcode:
TForm1.Button1Click(Sender: TObject);
var
  LSql : String;
begin
  LSql := 'SELECT id, Beschreibung FROM technik WHERE beschreibung LIKE';
  LSql := LSql + #39 +'%' + Edit1.Text + '%' + #39;
  ibdTechnik.SelectSQL.Text := LSql;
  ibdTechnik.Open;
habe ich da jetzt noch was Vergessen?
ich habe das DBGrid mit dem DataSource verknüpft und den DataSource mit dem DataSet so wie DataBase und Transaction.
ich Hatte es auch mit dem...

Delphi-Quellcode:
ibdTechnik.Filtered := true;
  ibdTechnik.Active := true;
  ibdTechnik.Locate('Beschreibung','test',[loPartialKey,loCaseInsensitive]);
  ibdTechnik.Filtered := true;
...versucht.
aber da schleuderte der Compiler mir Error meldungen um die Ohren, das bei leere Datenmenge nicht abgefragt werden kann.

Ich hoffe ich hab nicht umsonst ein neuen Thread geöffnet.

schon mal Danke für eure Hilfe.

Sir Rufo 11. Okt 2010 12:47

AW: DataSet Filtern
 
Wieso Filtered auf true und dann auf true?

WizoHulk 11. Okt 2010 12:52

AW: DataSet Filtern
 
jaaaaaa, hab ich wohl über sehen, eigendtlich soll da false hin.

Bummi 11. Okt 2010 12:53

AW: DataSet Filtern
 
kann es sein daß Du #34 statt #39 nehmen mußt?

Sir Rufo 11. Okt 2010 12:55

AW: DataSet Filtern
 
Schau mal ob es bei der Query Komponente einen OnFilter Event gibt

Dort kannst du dann entscheiden, was und wie gefiltert werden soll

Wenn die Abfragemenge sehr groß ist, dann kann man es auch so programmieren, dass erst ab 3 Zeichen im Edit die Abfrage ausgeführt wird und danach arbeitet man mit dem Filter weiter.

Dadurch reduziert sich die übertragene Datenmenge und auch die Anzahl der Abfragen

DeddyH 11. Okt 2010 12:58

AW: DataSet Filtern
 
Und verwende SQL-Parameter, dann muss man sich auch um den Zeichencode (#34, #39 oder wie?) keine Gedanken mehr machen.

Sir Rufo 11. Okt 2010 13:04

AW: DataSet Filtern
 
Code:
Select id, bezeichnung from MeineTab where Bezeichnung like :BezLike
Delphi-Quellcode:
Qry.ParamByName[ 'BezLike' ] := '%' + Edit1.Text + '%';
Für das OnFilter Event brauchst du noch eine Like Funktion http://www.latiumsoftware.com/en/delphi/00018.php

Ersetze in der Funktion * mit % und ? mit _ dann wird es SQL Like

nachti1505 11. Okt 2010 13:32

AW: DataSet Filtern
 
Außerdem fehlt in deinem InitalSQL glaube ich ein Leerzeichen hinter dem "LIKE"!

WizoHulk 11. Okt 2010 15:09

AW: DataSet Filtern
 
Vielen vielen dank für die schnellen Antworten.

gibt es da noch andere Möglichkeiten, bin in sql und db noch nicht so bewandert.
Ich dachte wenn schon der sql code in IbExpert geht dann wird er ja in Delphi auch gehen.
denn dort spuckt er mir ja haarklein in halbtextsuche alles aus.

nachti1505 11. Okt 2010 20:07

AW: DataSet Filtern
 
Was hast du denn bis jetzt probiert?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:02 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz