Entwickler-Ecke

Datenbanken - Überprüfen Wieviele Einträge in der Datenbank gefunden wurde


bruce185 - Do 04.05.06 01:46
Titel: Überprüfen Wieviele Einträge in der Datenbank gefunden wurde
hi,
also ich wollte mal fragen wie ich überprüfen kann Wieviele Einträge in der Datenbank gefunden wurde, z.B. gebe ich an ein, und dann soll eine Meldung kommen Wieviele Einträge mit an gefunden wurde, so sieht meine suchfunktion aus:


Delphi-Quelltext
1:
Table1.Locate('Vorname', Edit1.Text, [loCaseInsensitive, loPartialKey]);                    


und wenn ich dann suche, dan soll z.B. so eine Meldung kommen:

Es wurden mit dem Suchbegriff "an" 7 Einträge gefunden.

wie mache ich das am einfachsten?

Gruss Andreas


mkinzler - Do 04.05.06 06:42

Da durch eine Locate die Anzahl der datensätze in einem dataSet nicht verändert wird da nur der Datensatzzeiger verschoben wird, kannst du so nicht die Anzahl der passenden Datensätze ermitteln. In diesem Fall würde ich die den Einsatz einer expliziten Abfgare vorschlagen.


jasocul - Do 04.05.06 07:54

@mkinzler:
bruce benutzt ein TTable. Da ist nicht viel mit einer Abfrage zu machen.
(persönliche Anmerkung für mkinzler: Ich habe dich erwischt :wink:)

@bruce185:
Was mkinzler meint ist die Verwendung eines TQuery mit einer SQL-Abfrage. Evtl geht es auch mit der Filter-Funktion einer TTable-Komponente. Aber ich bin mir nicht sicher, ob dabei die richtige Anzahl der Datensätze zurück gegeben wird. Das müsstest du mal testen. Wobei ich die Variante mit SQL bevorzugen würde.


raiguen - Do 04.05.06 11:34

Moin :-)
Jo, mit TTable.Filter lässt sich das so machen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
Table1.DisableControls;  // Anzeigen 'einfrieren'
Table1.Filter := 'Vorname=' + QuotedStr ( Edit1.Text );
Table1.FilterOptions := [foCaseInsensitive];  //--Groß-/Kleinschreibung ignonieren
Table1.Filtered := True;
ShowMessage ( Format ('%d Einträge für %s gefunden', [ Table1.RecordCount, Edit1.Text ] ) );
Table1.Filtered := False;
Table1.EnableControls;  //Anzeigen wieder 'freigeben'

Mit Edit1.Text = 'Reiner' wird nur nach exakter Übereinstimmung gefiltert;
mit Edit1.Text = 'rein* wird alles gefiltert, was mit Rein anfängt, also Reiner, Reinhard, Reinhold etc...


bruce185 - Do 04.05.06 20:35

cool, ich danke euch für die hilfe, nun funzt es :D

Gruss Andreas