Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi für ADO Komponenten filter -> like für Zahlen (https://www.delphipraxis.net/51376-fuer-ado-komponenten-filter-like-fuer-zahlen.html)

missi 11. Aug 2005 08:26

Datenbank: MSSQL • Zugriff über: ADO

für ADO Komponenten filter -> like für Zahlen
 
Guten Morgen :)

Mit hilfe dieser Funktion haben wir früher in einem numerischen Feld nach Zahlteilfolgen gesucht. Seit dem wir ADO-Komponenten benutzen funktioniert diese Funktion nicht mehr.

Delphi-Quellcode:
   TB1.Filter   := SelectColumn + ' LIKE ' + EdtSearch.Text;
   TB1.Filtered := True;
   Value := Grid.Fields[TB1.FieldList.IndexOf(SelectColumn)].AsString;
   TB1.Filtered := False;
   TB1.Locate(SelectColumn, StrToIntDef(Value, 0), []);
Gibt es eventuell eine Alternative für diese Filterfunktion?

lg ela

shmia 11. Aug 2005 08:48

Re: für ADO Komponenten filter -> like für Zahlen
 
Zitat:

Zitat von missi
Mit hilfe dieser Funktion haben wir früher in einem numerischen Feld nach Zahlteilfolgen gesucht.

Nach Zahlteilfolgen zu suchen macht doch in 99,9% aller Fällen keinen Sinn.
Wenn man in einem Preisfeld nach "12*" suchen würde, dann würde man folgende Werte finden 12,99 Eur, 128,50 Eur, 1250,60 Eur.
Der Informationsgehalt dieses Suchergebnisse ist annäherd gleich Null (rein logisch betrachtet).

Wenn du aber in einem Lieferscheinfeld oder in einer Postleitzahl suchen möchtest, dann machen Zahlteilfolgen durchaus einen Sinn!!
Dann hast du aber einen DB Designfehler begangen, denn Lieferscheinnr, PLZ, Kundennr, ... werden als Stringfeld gespeichert.

missi 11. Aug 2005 08:54

Re: für ADO Komponenten filter -> like für Zahlen
 
Danke für den Tip :)

Aber unsere Software ist vielseitig verwendbar und bitte daher Lösungen zu Posten und nicht Vorschläge von einer DB-Struktur die besser geeignet scheint.

Danke :)

Luciano 11. Aug 2005 09:30

Re: für ADO Komponenten filter -> like für Zahlen
 
Hi,

ich hatte das selbe Problem und bin dann den von shmia beschriebenen Weg gegangen, ich hatte keine Alternative gefunden und auch nicht wirklich Zeit zum suchen.

Greets

Bernhard Geyer 11. Aug 2005 09:32

Re: für ADO Komponenten filter -> like für Zahlen
 
Sind auch Wildcards vorhanden?

Delphi-Quellcode:
TB1.Filter   := SelectColumn + ' LIKE %' + EdtSearch.Text + '%';

Treffnix 11. Aug 2005 09:33

Re: für ADO Komponenten filter -> like für Zahlen
 
Zitat:

Zitat von Bernhard Geyer
Sind auch Wildcards vorhanden?

Delphi-Quellcode:
TB1.Filter   := SelectColumn + ' LIKE %' + EdtSearch.Text + '%';

Ich Wildcards funktionieren nur bei Strings. Könntest mal so versuchen:

Delphi-Quellcode:
TB1.Filter   := SelectColumn + ' LIKE ''' + EdtSearch.Text + '%''';

Sharky 11. Aug 2005 09:34

Re: für ADO Komponenten filter -> like für Zahlen
 
Zitat:

Zitat von missi
.... bitte daher Lösungen zu Posten und nicht Vorschläge ...

Hai missi,

bist Du zwingend auf eine TTable angewiesen oder könntest Du auch mit einem TQuery arbeiten?
Wenn es geht könntest Du in deiner SQL-Abfrage das nummerische Feld ja in einen String casten und diesen dann in der WHERE-LIKE abfrage verwenden.

missi 11. Aug 2005 09:34

Re: für ADO Komponenten filter -> like für Zahlen
 
Zitat:

Zitat von Luciano
Hi,

ich hatte das selbe Problem und bin dann den von shmia beschriebenen Weg gegangen, ich hatte keine Alternative gefunden und auch nicht wirklich Zeit zum suchen.

Greets

na dann hoffe ich das jemand eine Lösung weiss. Den wir haben keinen Einfluss auf die DB-Struktur und suchen daher eine Lösung für das "Problem" bzw. eine Alternative um dies zu realisieren.

shmia 11. Aug 2005 09:42

Re: für ADO Komponenten filter -> like für Zahlen
 
Zitat:

Zitat von missi
es ist eine numerische Chip-Identifikationsnummer

Das wäre dann auch ein Kandidat für ein Stringfeld.
Es handelt sich um einen Identifikationsschlüssel, der genausogut auch Buchstaben enthalten könnte.
Es handelt sich um keine wirkliche Zahl, wie z.B. "Artikelmenge".
Mit einer Artikelmenge kann man rechnen (addieren, subtrahieren, ...).
Mit einer Chip-Identifikationsnummer kann man nicht rechnen.

marabu 11. Aug 2005 09:54

Re: für ADO Komponenten filter -> like für Zahlen
 
Hi missi,

wenn alles Invarianten sind, dann bleibt dir nichts anderes übrig, als das OnFilterRecord-Event zu bedienen. Eine Query wäre ohne Änderung an der Tabelle viel einfacher:

SQL-Code:
SELECT * FROM tabelle WHERE CAST(chip_id AS VARCHAR) LIKE '%42%'
Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:44 Uhr.
Seite 1 von 2  1 2      

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