![]() |
Datenbank: Paradox • Version: 7 • Zugriff über: BDE
in Datenbank nach nicht exakten Suchbegriffen suchen
Seid gegrüßt liebe DPler ;),
Hab folgende Frage ... Ich arbeite an einer Software, die einen sehr hohen Kundenstamm verwaltet. Nun habe ich eine Form auf der eine Suche nach einem Kunden durchgeführt werden kann. Da ich von meinen Anwendern nicht verlangen möchte, dass Sie sich exakt z.B. den Namen des Kunden merken, möchte ich in meiner Abfrage auch den Kunden Fritz anzeigen lassen wenn der kunde nur "fri" als suchbegriff definiert hat. Ich verwende keinen Query weil ich in Delphi noch nie damit gearbeitet hab, und nicht weiß wie ich des zeugs verwende. Rein theoretisch in den SQL-Bereich die SQL-Befehle reinschreiben und beim click auf den Suchenbutton den Query losjagen ... aber die Zeit erlaubt mir momentan keine Spielerein. Also ich verwende demnach die Table.locate Variante ... Wenn ich einen exakten Suchbegriff haben möchte weiß ich dass ich die Option
Delphi-Quellcode:
verwenden kann.
tKunde.Locate('Name' , eSuchbegriff.Text, [loCaseInsensitive])
Weil das Programm jetzt nicht direkt das Pro-Programm werden muss, und es eigentlich nur ein internes Projekt ist, Speichere ich den Kundennamen in einem Char - Feld in der Datenbank. Ich trenne also nicht Vor- und Nachname. Ich hab auf ![]() das man mit Variant als Option nach teilweise enthaltenen Stücken gesucht waren kann. meine schlaue idee ...
Delphi-Quellcode:
nun bekomm ich aber eine überaus hilfreiche Fehlermeldung
tMitarbeiter.Locate('Berufsbez' , eSuchbegriff.Text, [Variant])
'(' erwartet aber ']' gefunden. braucht Variant noch irgendwelche Parameter? wenn ja welche? ;) kann ich wenn ich 2 Optionen festlegen möchte z.B.
Delphi-Quellcode:
so schreiben?
tMitarbeiter.Locate('Berufsbez' , eSuchbegriff.Text, [Variant, loCaseInsensitive])
Vielen dank für eure Hilfe ;) Euer f4k3 |
Re: in Datenbank nach nicht exakten Suchbegriffen suchen
Hallo,
während Du auf Antworten wartest, hättest Du Dich ja schon längst in Queries einarbeiten, und 'like' benutzen können. Meiner Meinung nach wirst Du so irgendwann auf der Strecke bleiben. Locate wirst Du übrigens auch beim Einsatz von Queries verwenden müssen, wenn Du ein Suchergebnis analysieren willst und performant bleiben willst. |
Re: in Datenbank nach nicht exakten Suchbegriffen suchen
Hallo f4k3
s-off hat Recht, der SQL Befehl Like mit Platzhalter %ri% würde deine Antwort ausspucken. wobei ri ein Teil des Suchbegriffs darstellt Gruss nachtstreuner60 SQL-Lernen schadet nie... :roll: |
Re: in Datenbank nach nicht exakten Suchbegriffen suchen
Delphi-Quellcode:
Wäre eine Lösung für Dein Problem. Dann findet "Ichb" auch "IchbenutzeF1nicht".
tKunde.Locate('Name' , eSuchbegriff.Text, [loCaseInsensitive, loPartialKey])
|
Re: in Datenbank nach nicht exakten Suchbegriffen suchen
Zitat:
|
Re: in Datenbank nach nicht exakten Suchbegriffen suchen
Zitat:
soweit war ich schon, mit dieser Variante wird aber nicht "f1nicht" gefunden ... |
Re: in Datenbank nach nicht exakten Suchbegriffen suchen
Dann wirst Du entweder um SQL nicht herumkommen oder Du mußt Dein gesamtes DataSet sequentiell durchsuchen, den loPartialKey sucht nur einen Teil am Anfang einer Zeichenkette, nicht in der Mitte oder am Ende:
Delphi-Quellcode:
Function FindeTeilDesKundenNamen(ATeil : string) : boolean;
begin ATeil := AnsiUpperCase(ATeil); result := False; tKunden.First; while not tKunden.Eof do begin if Pos(ATeil, AnsiUpperCase(tKunden.FieldByName('Name').AsString)) > 0 then begin result := True; Break; end; TKunden.Next; end; end; |
Re: in Datenbank nach nicht exakten Suchbegriffen suchen
Zitat:
|
Re: in Datenbank nach nicht exakten Suchbegriffen suchen
Zitat:
Hab die Felder nun einfach getrennt. man kann nun also nach Vor- ODER Nachnamen suchen. somit brauch ich keine umständliche Variante ... Danke für eure Hilfe ... euer f4k3 |
Re: in Datenbank nach nicht exakten Suchbegriffen suchen
Hallo,
was ist aber, wenn du im Wort suche willst ? Oder schlimmer noch, der Anwender ? ;) Da du anscheinend noch beim Coden bist, wieder der Rat, Finger weg von Paradox. Such mal im Netz nach "paradox index out of date" oder "paradox blob file has been changed". Ich würde Firebird nehmen. Ich habe fast 8 Jahre mit Paradox gearbeitet (müssen ;) ) und bin froh, jetzt weg zu sein. Früh um 05:30 Kundenanruf "Indexfehler, das Programm läuft nicht ..." Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:23 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-2025 by Thomas Breitkreuz