Autor Beitrag
Kaweb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Sa 29.03.03 19:24 
hallo,

ich verwende locate zum durchsuchen meiner datenbank. nur wird nicht alles gefunden. ich habe in einem Feld Vorname und Nachname stehen. "Fritz Müller". Wenn ich jetzt nach "Müller" suche, findet Locate nichts?!

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure Tmain_form.SearchInDatabase;
var options: TLocateOptions;
begin
    Options := [loCaseInsensitive,loPartialKey];
    with Table1 do
         begin
              if not Locate('pvornachname',search_form.suchen.Text,Options) then
              if not Locate('panschrift',search_form.suchen.Text,Options) then
              if not Locate('pplz',search_form.suchen.Text,Options) then
              if not Locate('port',search_form.suchen.Text,Options) then
              if not Locate('gfirma',search_form.suchen.Text,Options) then
              if not Locate('gabteilung',search_form.suchen.Text,Options) then
              if not Locate('ganschrift',search_form.suchen.Text,Options) then
              if not Locate('gplz',search_form.suchen.Text,Options) then
              if not Locate('gort',search_form.suchen.Text,Options) then
         end;
end;


im generellen ist es so, sobald etwas mit einem leerzeichen getrennt wird, findet locate nur das vor dem leerzeichen.

währe nett, wenn ihr mir helfen könntet.

mfg
Andreas alias Kaweb
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Sa 29.03.03 19:29 
Also ich bin mir nicht ganz sicher, denn Locate setze ich nur intern ein, aber versuch mal vor den Searchstring ein % zu setzen, vielleicht gehts dann besser. Ansonsten geb ich Dir den Tipp, das Ganze über ein SQL-Query zu machen, ist viel komfortabler, auch auf die Suchfunktionen bezogen und Du hast gleich alle Ergebnis in einem Query
Kaweb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Sa 29.03.03 19:38 
hi,

das % bewirkt auch nichts. wenn ich ein SQL-Query verwende, brauch ich wieder die BDE. Ich arbeite mit der EasyTable Komponente. Gibts denn keine andere möglichkeit eine Standartdatenbank zu durchsuchen?

mfg
Andreas
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Sa 29.03.03 19:39 
Kaweb hat folgendes geschrieben:
das % bewirkt auch nichts. wenn ich ein SQL-Query verwende, brauch ich wieder die BDE. Ich arbeite mit der EasyTable Komponente. Gibts denn keine andere möglichkeit eine Standartdatenbank zu durchsuchen?


Was meinst Du mit Standard-Datenbank? Ich kenn EasyTable net, für was für ne Datenbank sind die?
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Sa 29.03.03 21:16 
hallo andi!

warum richtest in deiner tabelle denn nicht ein feld für den vornamen und eins für den zunamen ein? dann hättest du viele probleme von anfang an nicht! ;)

bei locate heisst der platzhalter '*' und nicht '%', das gibts nur bei SQL.
ausserdem wird der '*' nur am wortende berücksichtigt, am wortanfang klappts nicht

mfg, stefan
Kaweb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: So 30.03.03 12:49 
also mit * gehts leider auch net :cry: ich glaub ich werde das feld "Vor- / Nachname" in zwei Felder aufteilen.

@UGrohne: Hier steht, was EasyTable ist. :idea:


mfg
Andreas