AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi in Datenbank nach nicht exakten Suchbegriffen suchen
Thema durchsuchen
Ansicht
Themen-Optionen

in Datenbank nach nicht exakten Suchbegriffen suchen

Ein Thema von f4k3 · begonnen am 10. Mär 2008 · letzter Beitrag vom 13. Mär 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#1

in Datenbank nach nicht exakten Suchbegriffen suchen

  Alt 10. Mär 2008, 16:33
Datenbank: Paradox • Version: 7 • Zugriff über: BDE
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 tKunde.Locate('Name' , eSuchbegriff.Text, [loCaseInsensitive]) verwenden kann.

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 Delphi-Treff - Datenbank Tipps & Tricks gesehen,
das man mit Variant als Option nach teilweise enthaltenen Stücken gesucht waren kann.

meine schlaue idee ...

tMitarbeiter.Locate('Berufsbez' , eSuchbegriff.Text, [Variant]) nun bekomm ich aber eine überaus hilfreiche Fehlermeldung
'(' erwartet aber ']' gefunden.

braucht Variant noch irgendwelche Parameter?
wenn ja welche?

kann ich wenn ich 2 Optionen festlegen möchte z.B.
tMitarbeiter.Locate('Berufsbez' , eSuchbegriff.Text, [Variant, loCaseInsensitive]) so schreiben?

Vielen dank für eure Hilfe Euer f4k3
Sascha
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#2

Re: in Datenbank nach nicht exakten Suchbegriffen suchen

  Alt 10. Mär 2008, 16:44
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.
  Mit Zitat antworten Zitat
nachtstreuner60

Registriert seit: 15. Jan 2007
Ort: Eisenach
54 Beiträge
 
Delphi 7 Professional
 
#3

Re: in Datenbank nach nicht exakten Suchbegriffen suchen

  Alt 10. Mär 2008, 16:55
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...
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: in Datenbank nach nicht exakten Suchbegriffen suchen

  Alt 10. Mär 2008, 17:24
tKunde.Locate('Name' , eSuchbegriff.Text, [loCaseInsensitive, loPartialKey]) Wäre eine Lösung für Dein Problem. Dann findet "Ichb" auch "IchbenutzeF1nicht".
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#5

Re: in Datenbank nach nicht exakten Suchbegriffen suchen

  Alt 10. Mär 2008, 17:38
Zitat von Union:
Dann findet "Ichb" auch "IchbenutzeF1nicht".
Sehr schön formuliert
  Mit Zitat antworten Zitat
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#6

Re: in Datenbank nach nicht exakten Suchbegriffen suchen

  Alt 13. Mär 2008, 09:49
Zitat von Union:
tKunde.Locate('Name' , eSuchbegriff.Text, [loCaseInsensitive, loPartialKey]) Wäre eine Lösung für Dein Problem. Dann findet "Ichb" auch "IchbenutzeF1nicht".
sehr witzig ^^

soweit war ich schon,

mit dieser Variante wird aber nicht "f1nicht" gefunden ...
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: in Datenbank nach nicht exakten Suchbegriffen suchen

  Alt 13. Mär 2008, 10:09
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;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Peinhard

Registriert seit: 8. Jul 2006
152 Beiträge
 
#8

Re: in Datenbank nach nicht exakten Suchbegriffen suchen

  Alt 13. Mär 2008, 10:16
Zitat von f4k3:
mit dieser Variante wird aber nicht "f1nicht" gefunden ...
Eine inkrementelle Suche - und nichts anderes ist Locate mit loPartialkey - beginnt nun einmal immer 'vorne'. Wenn du auch Teilstrings in der Mitte finden willst, bleibt dir nur der Vorschlag von nachtstreuner mit SQL %Suchbegriff% - oder die wenig performante while not eof-Schleife mit Pos(). Du hast dann allerdings auch ein anderes Interface-Verhalten - statt 'Anspringen' eines Datensatzes sinnvollerweise die Einschränkung der Auswahl.
  Mit Zitat antworten Zitat
Benutzerbild von f4k3
f4k3

Registriert seit: 15. Aug 2007
Ort: Nürnberg
313 Beiträge
 
Delphi 2007 Architect
 
#9

Re: in Datenbank nach nicht exakten Suchbegriffen suchen

  Alt 13. Mär 2008, 10:47
Zitat von Peinhard:
Zitat von f4k3:
mit dieser Variante wird aber nicht "f1nicht" gefunden ...
Eine inkrementelle Suche - und nichts anderes ist Locate mit loPartialkey - beginnt nun einmal immer 'vorne'. Wenn du auch Teilstrings in der Mitte finden willst, bleibt dir nur der Vorschlag von nachtstreuner mit SQL %Suchbegriff% - oder die wenig performante while not eof-Schleife mit Pos(). Du hast dann allerdings auch ein anderes Interface-Verhalten - statt 'Anspringen' eines Datensatzes sinnvollerweise die Einschränkung der Auswahl.
jaja ... habs ja eingesehen.

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
Sascha
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: in Datenbank nach nicht exakten Suchbegriffen suchen

  Alt 13. Mär 2008, 13:03
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
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 Uhr.
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