![]() |
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:
Gibt es eventuell eine Alternative für diese Filterfunktion?
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), []); lg ela |
Re: für ADO Komponenten filter -> like für Zahlen
Zitat:
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. |
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 :) |
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 |
Re: für ADO Komponenten filter -> like für Zahlen
Sind auch Wildcards vorhanden?
Delphi-Quellcode:
TB1.Filter := SelectColumn + ' LIKE %' + EdtSearch.Text + '%';
|
Re: für ADO Komponenten filter -> like für Zahlen
Zitat:
Delphi-Quellcode:
TB1.Filter := SelectColumn + ' LIKE ''' + EdtSearch.Text + '%''';
|
Re: für ADO Komponenten filter -> like für Zahlen
Zitat:
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. |
Re: für ADO Komponenten filter -> like für Zahlen
Zitat:
|
Re: für ADO Komponenten filter -> like für Zahlen
Zitat:
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. |
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:
Grüße vom marabu
SELECT * FROM tabelle WHERE CAST(chip_id AS VARCHAR) LIKE '%42%'
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:10 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