Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Ein Suchbegriff in mehreren Feldern finden (https://www.delphipraxis.net/10179-ein-suchbegriff-mehreren-feldern-finden.html)

APP 13. Okt 2003 20:07

Re: Ein Suchbegriff in mehreren Feldern finden
 
Hallo Memo,

Zitat:

Zitat von Memo
...Oder nur eine. Was hast du sonst erwartet? Er wollte es doch genauso haben, oder hab ich was überlesen? Ebend "or".

Zitat:

...IMHO, locate in dem Fall auch reicht!?
Und, korrigier mich rühig, aber ich lese nichts über mehrere Datensätze die zurückgegeben werden sollen. Also wozu braucht er jetzt den Filter(bezogen auf die Fragestellung)?
es ist jetzt wohl schon zu spät, um darüber zu diskutieren ob und was
ich erwartet und nicht gelesen habe, aber Du hast nun ja eine für Tyler
befriedigende Lösung gefunden, obwohl auch Du (so wie ich) zuerst
in die falsche Richtung tendiert bist.

Zum Code würde ich noch Folgendes hinzufügen:

Delphi-Quellcode:
VAR
   x, y                           : Integer;
BEGIN
   X := 0; // auf 0 Setzten da die Variablen sonst undefiniert
   Y := 0; // sind und 'nix gefunden' nicht angestoßen wird.
p.s.: Wobei wir wieder bei den Datenmengen sind:
Zitat:

Zitat von Tyler
allgemeinen Suchfunktion (Strg+F)

springt nacheinander zu jedem gefundenen Satz, obige Funktion nur zum Ersten gefundenen...

Tyler 14. Okt 2003 07:20

Re: Ein Suchbegriff in mehreren Feldern finden
 
Danke nochmal für die Hinweise :)

Was ich noch hinzufügen möchte:

Die Funktion funktioniert warscheinlich einwandfrei (bin noch nicht zum Testen gekommen), aber leider bietet sie nicht die Geschwindigkeit mit der der normale Locate-Befehl zum Datensatz springt...

als Beispiel:
Hab hier ne DB mit 5000 Datensätzen, suche ich nach einem Datensatz der weiter hinten vorkommt mit Locate, springt Delphi innerhalb einer Sekunde auf diesen Datensatz, suche ich aber mit z.B. der o.g. Funktion, kann das ganz 5-10 Sekunden dauern... das ist tragisch.

Naja, warscheinlich muss ich mir dazu ne Fremdkomponente raussuchen

vielen Dank nochmal

Memo 14. Okt 2003 10:30

Re: Ein Suchbegriff in mehreren Feldern finden
 
Zitat:

Zitat von Tyler
Die Funktion funktioniert warscheinlich einwandfrei (bin noch nicht zum Testen gekommen), aber leider bietet sie nicht die Geschwindigkeit mit der der normale Locate-Befehl zum Datensatz springt...

Ähm, du bist noch nicht zum testen gekommen, weist aber das sie nicht nicht die selbe Geschwindigkeit hat? Ich nahm eigentlich nicht an, dass der Code die unnormale Variante des Locate-Befehls verwendet.

Zitat:

Zitat von Tyler
Hab hier ne DB mit 5000 Datensätzen, suche ich nach einem Datensatz der weiter hinten vorkommt mit Locate, springt Delphi innerhalb einer Sekunde auf diesen Datensatz, suche ich aber mit z.B. der o.g. Funktion, kann das ganz 5-10 Sekunden dauern... das ist tragisch.

Das kann an vielen Faktoren liegen. Ich hab es gerade mit einer Table mit exakt 6725 Datensätzen getestet und konnte kein Geschwindigkeitsproblem feststellen.
Hast du viele Datenintensive Steuerelemete an der Table zu hängen, so werden die bei jedem Durchlauf aktuallisiert. Das könnte man durch Table.DisableControls verhindern.
Oder evt. liegt es an deiner Tabelle. Nichts für ungut, aber DBASEIII(Ashton Tate lässt grüssen) mit Delphi ist irgendwie wie ein Ferrari mit Holzrädern. Ich hab hier noch irgendwo ein kleines Konvert.-Tool rumliegen falls Interesse besteht, melde dich einfach.


Zitat:

Zitat von Tyler
Naja, warscheinlich muss ich mir dazu ne Fremdkomponente raussuchen

Eine Fremdkomonente? :shock: Die was können soll?

@App
Zitat:

Zitat von APP
es ist jetzt wohl schon zu spät, um darüber zu diskutieren ob und was
ich erwartet und nicht gelesen habe, aber Du hast nun ja eine für Tyler
befriedigende Lösung gefunden, obwohl auch Du (so wie ich) zuerst
in die falsche Richtung tendiert bist.

Das lag, so wie meistens, daran, dass die entscheidende Information erst hinterher kam. Aber wie du siehst ist auch mein Lösungsansatz nicht zufriedenstellend. Also ist es wohl noch nicht zu spät.
Zitat:

Zitat von APP
p.s.: Wobei wir wieder bei den Datenmengen sind:

Na lass mal einen konkreten Lösungsansatz gucken.

APP 14. Okt 2003 12:34

Re: Ein Suchbegriff in mehreren Feldern finden
 
Hallo Memo
hier bittschön:

Das liefert die Datensatzmenge nach einem ODER zurück
Delphi-Quellcode:
PROCEDURE TForm1.Button1Click(Sender: TObject);
BEGIN
  // Noch immer DBDemos!
  Table1.Filtered := False;
  BEGIN
    Table1.Filter := 'NAME = ' + QuotedStr('House Cat') + 'OR AREA = ' + QuotedStr('Fish Bowls');
  END;
  Table1.Filtered := True;
  // 1. Datensatz
  Table1.First;
END;
Das ist die CTRL+F Funktion
Delphi-Quellcode:
PROCEDURE TForm1.Button3Click(Sender: TObject);
BEGIN
  // Ctrl+F
  Table1.Next;
  // am Ende zurück zum Start
  IF (Table1.Eof = True) THEN
    Table1.First;
END;

Tyler 14. Okt 2003 16:34

Re: Ein Suchbegriff in mehreren Feldern finden
 
@memo:

du hattest recht, hätte nicht gedacht das ein grid und vllt. 10 db-edit´s soviel ausmachen: nach

Table.DisableControls

gings dann auch sehr flott zur Sache :D

@app

Danke, als Filter wirklich ausgereift und brauchbar, werd ich garantiert drauf zurückgreifen, aber ich wollt die Datenmenge ja beibehalten :)


Danke euch beiden für eure Mühen, hat mir auf jedenfall viel weitergeholfen :)

mfG


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:26 Uhr.
Seite 2 von 2     12   

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