Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Suchfunktion in Paradoxtabelle ? (https://www.delphipraxis.net/65945-suchfunktion-paradoxtabelle.html)

Vader 22. Mär 2006 18:27

Datenbank: Paradox • Version: 7 • Zugriff über: TTable

Suchfunktion in Paradoxtabelle ?
 
hallo,

wenn ich so suche muß ich den ganz richtigen namen eingeben in das suchfeld sonst findet er mir nichts !

Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
var suche: string;
begin
suche:= edit1.Text;
Table1.Locate('Nachname', suche, [loCaseInsensitive]);
Showmessage('Folgende Nachname wurde gefunden');
end;
wie geht das,das ich zb. nur 2 anfangsbuchstaben eingeben muß damit er mir den namen findet ?
mfg vader

mkinzler 22. Mär 2006 18:42

Re: Suchfunktion in Paradoxtabelle ?
 
loPartialKey zu LocateOptions hinzufügen

Vader 22. Mär 2006 19:21

Re: Suchfunktion in Paradoxtabelle ?
 
super,danke

und wie funktioniert das, wenn man in mehreren tabellenfelder suchen möchte zb. ich habe 3 felder
(nachname, vorname und strasse ) jetzt weiß ich zb. nur die strasse ?
mfg vader

mkinzler 22. Mär 2006 19:34

Re: Suchfunktion in Paradoxtabelle ?
 
Delphi-Quellcode:
Table.Locate('<Feldname1>;<Feldname2>;<Feldname3>', VarArrayOf([ Wert1, Wert2, Wert3]), [loCaseInsensitive,loPartialKey]);

Vader 22. Mär 2006 19:52

Re: Suchfunktion in Paradoxtabelle ?
 
hallo

Delphi-Quellcode:
[Fehler] Unit1.pas(134): Undefinierter Bezeichner: 'Wert1'
und wo bringe ich meine variable "suche" unter in deiner codezeile ?
mfg vader

mkinzler 22. Mär 2006 19:55

Re: Suchfunktion in Paradoxtabelle ?
 
Wert1, Wert2, wert3 stand hier für gesuchter wert von DatenbankFeld1 usw.

z.B. wenn die Felder 'Name;Vorname;Strasse' ist ist Wert1 für z.B. 'Maier', Wert2 z.B. 'Peter' ...

Vader 22. Mär 2006 20:17

Re: Suchfunktion in Paradoxtabelle ?
 
[/delphi]procedure TForm1.Button5Click(Sender: TObject);
var suche: string;
begin
suche:= edit1.Text;
Table1.Locate('<Nachname>;<Vorname>;<Strasse>', VarArrayOf([ Gruber, Gerhard, Allestrasse]), [loCaseInsensitive,loPartialKey]);
end;
Delphi-Quellcode:
[Fehler] Unit1.pas(134): Undefinierter Bezeichner: 'Gruber'[delphi]

ich krieg das nicht auf eine reihe ?
mfg vader

mkinzler 22. Mär 2006 20:20

Re: Suchfunktion in Paradoxtabelle ?
 
So müßte es funktionieren:
Delphi-Quellcode:
Table1.Locate('Nachname;Vorname;Strasse', VarArrayOf([ 'Gruber', 'Gerhard', 'Allestrasse']), [loCaseInsensitive,loPartialKey]);

Vader 22. Mär 2006 20:36

Re: Suchfunktion in Paradoxtabelle ?
 
aber was ist mit meiner variable " suche " meine sucheingabe ist über ein editfeld ??
mfg vader

mkinzler 22. Mär 2006 20:47

Re: Suchfunktion in Paradoxtabelle ?
 
Ich gehe mal davon aus das Edi1-< Nachname, Edit2 -> Vorname, Edit3 -> Strasse ist.

Delphi-Quellcode:
Table1.Locate('Nachname;Vorname;Strasse', VarArrayOf([ Edit1.Text, Edit2.Text, Edit3.Text]), [loCaseInsensitive,loPartialKey]);

Vader 22. Mär 2006 20:59

Re: Suchfunktion in Paradoxtabelle ?
 
ich glaub wir haben uns falsch verstanden,
in SQL würde das so ausschauen was ich meine
Delphi-Quellcode:
SELECT * 
FROM Tabelle
WHERE Feld1 like '%X%'
AND  Feld2 like '%X%'
AND  FeldN like '%X%'
mfg vader

mkinzler 22. Mär 2006 21:11

Re: Suchfunktion in Paradoxtabelle ?
 
Der Unterschied zwischen dem locate und deiner SQL-Anweisung ist, das der Locate, die Ergebnismenge der Tabelle nichtr einschränkt und Nur den Datensatzzeiger auf den 1. gefundenen Wert setzt, ansatt nur noch die passenden werte anzeigt.
Willst du zweiteres mit einer Table erreichen mußt du einen Filter setztn.

Vader 22. Mär 2006 21:29

Re: Suchfunktion in Paradoxtabelle ?
 
das was ich mit sql darstellte ist auch nicht genau was ich meine, da wird alles angezeigt mit "X",

ich möchte nach einen wort in meiner ganzen tabelle suchen, und nicht nach einen wort in einen feld der tabelle !
die suche soll alle 3 felder in meiner tabelle nach den eingegebenen suchbegriff absuchen !!
mfg vader

mkinzler 22. Mär 2006 21:45

Re: Suchfunktion in Paradoxtabelle ?
 
Zitat:

Zitat von Vader
das was ich mit sql darstellte ist auch nicht genau was ich meine, da wird alles angezeigt mit "X",

Du hast ja auch gesagt er soll nach Wörtern mit X suchen. Plazhalter in SQL ist %.

ich möchte nach einen wort in meiner ganzen tabelle suchen, und nicht nach einen wort in einen feld der tabelle !
die suche soll alle 3 felder in meiner tabelle nach den eingegebenen suchbegriff absuchen !!
mfg vader[/quote]

SQL-Code:
SELECT
    *
FROM
    Tabelle
WHERE
    Feld1 like :such OR
    Feld2 like :such OR
    FeldN like :such
Delphi-Quellcode:
Query.ParamByName('such').asString := '%*+Edit1.Text+'%';
t

Vader 22. Mär 2006 22:31

Re: Suchfunktion in Paradoxtabelle ?
 
nein, ich hab aber TTablezugriff und nicht TQueryzugriff in meinen project,
siehe beitrag #1
mfg vader

mkinzler 22. Mär 2006 22:37

Re: Suchfunktion in Paradoxtabelle ?
 
Zitat:

Zitat von Vader
nein, ich hab aber TTablezugriff und nicht TQueryzugriff in meinen project,
siehe beitrag #1
mfg vader

kann man doch leicht ändern ;-)

oder man setzt die FilterOptions foCaseInsensitive auf true. Setzt den Filter auf
'Name = '''%'+Edit1.Text+'%''' or Vorname = ... ';

Und dann Filtered auf True

Vader 22. Mär 2006 23:03

Re: Suchfunktion in Paradoxtabelle ?
 
du schreibst:
Zitat:

oder man setzt die FilterOptions foCaseInsensitive auf true. Setzt den Filter auf
'Name = '''%'+Edit1.Text+'%''' or Vorname = ... ';

bezieht sich das auf TTable vom beitrag #1, oder bezieht sich das auf TQuery ??
mfg vader

mkinzler 22. Mär 2006 23:05

Re: Suchfunktion in Paradoxtabelle ?
 
Auf die Table, ich würde aber die Variante mit dem Query wählen!

Vader 23. Mär 2006 07:17

Re: Suchfunktion in Paradoxtabelle ?
 
hallo

du schreibst:
Zitat:

oder man setzt die FilterOptions foCaseInsensitive auf true. Setzt den Filter auf
'Name = '''%'+Edit1.Text+'%''' or Vorname = ... ';
1.FilterOptions foCaseInsensitive habe ich auf true gesetzt
2.Setzt den Filter auf 'Name = '''%'+Edit1.Text+'%''' , wo muß ich das setzten bzw. reinschreiben, im objektinspektor - eigenschaft "Filter" ?

mfg vader

mkinzler 23. Mär 2006 08:11

Re: Suchfunktion in Paradoxtabelle ?
 
Zitat:

Setzt den Filter auf 'Name = '''%'+Edit1.Text+'%''' , wo muß ich das setzten bzw. reinschreiben, im objektinspektor - eigenschaft "Filter" ?
da in der Filterbedingung eine Variable enthalten ist, mußt du dies zur Laufzeit am in der onChange Eventbehandlungsroutine des Edits setzten.

Delphi-Quellcode:
Table1.Filter := 'Name = '+QuotedStr( (Sender as TEdit).Text)+' or Vorname='+QuotedStr( (Sender as TEdit).Text)+' or Strasse = '+QuotedStr( (Sender as TEdit).Text);
Table1.Filtered := True;

Vader 23. Mär 2006 09:10

Re: Suchfunktion in Paradoxtabelle ?
 
es schaut jetzt so aus:
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
begin
Table1.Filter := 'Nachname = '+QuotedStr( (Sender as TEdit).Text)+' or Vorname='+QuotedStr( (Sender as TEdit).Text)+' or Strasse = '+QuotedStr( (Sender as TEdit).Text);
Table1.Filtered := True;
end;
wenn ich jetzt in das suchedit was eingebe, sind alle daten in meinem DBGrid verschwunden ?
mfg vader

mkinzler 23. Mär 2006 09:23

Re: Suchfunktion in Paradoxtabelle ?
 
Huch, ich habe ja total die % vergessen. Ersetzte
Delphi-Quellcode:
QuotedStr( (Sender as TEdit).Text)
durch
Delphi-Quellcode:
QuotedStr( '%'+(Sender as TEdit).Text+'%')

Vader 23. Mär 2006 09:50

Re: Suchfunktion in Paradoxtabelle ?
 
wieder das gleiche , es sind die daten weg !!!!!

Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
begin
Table1.Filter := 'Nachname = '+QuotedStr( '%'+(Sender as TEdit).Text+'%')+' or Vorname='+QuotedStr( '%'+(Sender as TEdit).Text+'%')+' or Strasse = '+QuotedStr( '%'+(Sender as TEdit).Text+'%');
Table1.Filtered := True;
end;
mfg vader

mkinzler 23. Mär 2006 10:00

Re: Suchfunktion in Paradoxtabelle ?
 
Ich habe grad noch mal in der Delphihilfe nachgesehen, bei, Filter der TTable ist * Joker.

Vader 23. Mär 2006 10:10

Re: Suchfunktion in Paradoxtabelle ?
 
Delphi-Quellcode:
( '*'+(Sender as TEdit).Text+'*')
wieder dsa gleiche, daten sind weg !
mfg vader


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:04 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