Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Datenbank suchen (https://www.delphipraxis.net/63918-datenbank-suchen.html)

ronnyz 24. Feb 2006 14:30

Datenbank: Paradox • Zugriff über: Delphi 3

Datenbank suchen
 
Halloo zusammen ,, habe eine Datenbank table1 database1
Über ein menü möchte ich auf suchen klicken ,, der user soll dann den begriff nach dem er sucht eingeben
und der Datensatz in dem der begriff gefunden wird soll angezeigt werden ... (DBGrid1)

habe mir im netz bisher einen Wolf gesucht .. ich weiß auch das ich mal einer routine aus einer adressverwaltung genutzt habe und das es dort klappt.

Allerdings ist da 5 jahre her Delphi 1 und nun fange ich wieder ganz von vorn an ...

marabu 24. Feb 2006 14:41

Re: Datenbank suchen
 
Herzlich willkommen in der Delphi-PRAXiS, ronnyz.

Es gibt mindestens zwei Möglichkeiten für dich in einer Paradox-Tabelle zu suchen. Die eine ist über die Locate-Methode der TTable-Komponente, die andere per LocalSQL mit einer TQuery-Komponente. Wenn du mit Locate() suchst, dann wird der nächste passende Satz gefunden und im DBGrid automatisch selektiert. Die Suche per LocalSQL ist dann interessant, wenn du aus einer großen Menge von Sätzen eine Untermenge herausgreifen willst.

Grüße vom marabu

ronnyz 24. Feb 2006 14:57

Re: Datenbank suchen
 
danke dir genauso hab ich mir das vorgestellt >>>>>>>> Wenn du mit Locate() suchst >>>>>>>>>

genau das wie gebe ich das nun in der prozedur ein


procedure TForm1.suchenClick(Sender: TObject);
begin
?????????????????????????????????????
end;

end.



PS vielen Dank für die schnelle Antwort

marabu 24. Feb 2006 15:43

Re: Datenbank suchen
 
Im einfachsten Fall geht es so:

Delphi-Quellcode:
procedure TForm1.suchenClick(Sender: TObject);
begin
  with DBGrid1.DataSource.DataSet do
    if not Locate('feld1', 'text1', []) then
      ShowMessage('Pech gehabt');
end;
Je nach Feldtyp kannst du noch Optionen in den LocateOptions (dritter Parameter) benutzen. Auch das Suchen in einer Feldkombination ist möglich, allerdings mit leicht geänderter Syntax:

Delphi-Quellcode:
... Locate('feld1;feld2', VarArrayOf(['text1', 'text2']), [loCaseInsensitive, loPartialKey])
Schau einfach mal in die Online Hilfe von Delphi.

marabu

ronnyz 24. Feb 2006 15:50

Re: Datenbank suchen
 
Danke ...werd ich mal lesen C-;

ronnyz 24. Feb 2006 16:11

Re: Datenbank suchen
 
soweit klar

procedure TForm1.SuchenClick(Sender: TObject);
begin
with DBGrid1.DataSource.DataSet do
if not Locate('NR', '2', []) then
ShowMessage('Nichts gefunden ');
end;


bedeutet wenn 2 gesucht wird in dbgrid anzeigen wenn nicht nichts gefunden...

allerdings hab ich mich wohl nicht richtig ausgedrückt ...

weil bei der lösung muß ich ja vorher im Quelltes eingeben was gesucht wird hier z.B nr.2

ich möchte aber das der user über ein menüpunkt suchen klcikt evtl sich finddialog öffrnen er dann von mir aus die nr 99 eingibt und dan eine meldung nicht gefunden kommt oder in dbgrind den datensatz anzeigt ...

marabu 24. Feb 2006 16:34

Re: Datenbank suchen
 
Schau mal:

Delphi-Quellcode:
procedure TForm1.suchenClick(Sender: TObject);
var
  s: String;
begin
  with DBGrid1.DataSource.DataSet do
  begin
    s := FieldByName('NR').AsString;
    if InputQuery('Suchen nach', 'NR', s) and (s <> '') then
      if not Locate('NR', s, []) then
        ShowMessage(Format('NR "%s" nicht gefunden', [s]));
  end;
end;
Wenn es nicht funktioniert, dann musst du den Datentyp für den Suchwert anpassen.

marabu

ronnyz 24. Feb 2006 16:48

Re: Datenbank suchen
 
:-D Vielen Lieben Dank , hat geklappt , genau das hab ich gesucht ,,, eingetlich ganz einfach wenn mans liest ...
naja .. muß erst ma wieder rein kommen ...

Übung macht den Meister :wall:


C-;


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