Autor Beitrag
Heidfeldfreak
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Sa 16.04.11 15:58 
Hi,

bin neu im Delphiforum
Mein Frage:
Wie baut man eine Suchleiste in ein Adressbuch ein. Ich möchte das Die Suchleiste die Namen aus meiner Datenbank ("adressen.db") liest und mit dem eingegeben Namen vergleicht. Wenn er was findet soll er antowrten "Eintrag gefunden" und den dazugehörigen Namen anzeigen. Wenn er ncihts findet soll er er antworten "kein Eintrag gefunden".

Hoffe ihr könnt mir helfen!
haentschman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 285
Erhaltene Danke: 33


DX10 Berlin Professional
BeitragVerfasst: Sa 16.04.11 16:12 
Hallo und willkommen hier...

Die Suchleiste ist quasi eine Edit Komponente. In die kann der User seine "Frage" eingeben.
Um genauer zu sein mußt du ein paar mehr Angaben machen.
- welche Datenbank ?
- wie greifst du darauf zu ?
- soll nur der genaue Text gefunden werden oder auch Teile davon ?

:wave:
Heidfeldfreak Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Sa 16.04.11 17:49 
hi,

ich mach für die schule ein Adressbuch.
Ich hab nach einem Tutorial eine Tablle gemacht (Paradox 7) mit Datasource-Komponente, TTable-Komponente und DBNavigator. Alles hab ich mit einander verbunden und funzt auch. Bloß halt bei diese Suchleiste hab ich keine Ahnung wie ich die machen soll!
haentschman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 285
Erhaltene Danke: 33


DX10 Berlin Professional
BeitragVerfasst: Sa 16.04.11 18:05 
Stichworte:

- Edit Feld für die Suchbegriffeingabe
- Button für suchen
- im Button Click Funktion Locate aufrufen. Liefert True wenn gefunden, False wenn nicht.

...den Rest macht die Delphi Hilfe, das Forum und Lesen. :zwinker:
Heidfeldfreak Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 17.04.11 09:16 
Gut, danke :-)
Aber ich habe keine Ahnung wie ich Locate verwende!
Also sagen wir ich möchte Name und Vorname suchen?
Wie bekomme ich den Zugriff auf meine Datenbank?

Sorry das ich mich so dumm anstellen, aber Info ist nicht so mein Fach!
haentschman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 285
Erhaltene Danke: 33


DX10 Berlin Professional
BeitragVerfasst: So 17.04.11 09:38 
Moin...

Zitat:
Aber ich habe keine Ahnung wie ich Locate verwende!

...lesen bildet :zwinker:
docs.embarcadero.com...EDataSet_Locate.html

Zitat:
Wie bekomme ich den Zugriff auf meine Datenbank?

Du hast ja TTable schon. Da stehen ja alle Datensätze drin.

Das Locate auf die Table anwenden...

PS:
- je komplizierter sie Suchanfrage wird umso schlechter ist das mit Locate zu lösen. In richtigen DBMS läßt man die Datenbank suchen und sich das Ergebnis zurückliefern.
- TTable hält sämtliche Datesätze, auch wenn nur eine Teilmenge (eigentlich) benötigt wird.

Für diesen Beitrag haben gedankt: Heidfeldfreak
Heidfeldfreak Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 17.04.11 13:10 
ich hab das jz so gemacht, aber es passiert nix!

begin
if Table1.Locate('Vorname',Suche_edit.text, [loPartialKey])
then
ShowMessage('Eintrag gefunden!');
Suche_edit.text:='';

end;

Kann jmd. helfen?
haentschman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 285
Erhaltene Danke: 33


DX10 Berlin Professional
BeitragVerfasst: So 17.04.11 13:33 
bis auf ein fehlendes begin / end ist es soweit richtig.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
begin
  if Table1.Locate('Vorname',Suche_edit.text, [loPartialKey]) then
  begin
    ShowMessage('Eintrag gefunden!');
    Suche_edit.text:='';
  end;
end;


Welcher Vorname steht in der Tabelle ? Wie hast du es in das Edit eingegeben ?

Schau dir nochmal die TLocateOptions in der Hilfe an. So wie es jetzt dasteht muß der Text in der Tabelle im Feld Vorname teilweise aber exakt in der Schreibweise vorliegen. Beachte, daß du mit Locate nur immer den ersten gefunden Datensatz bekommst bzw. der Datensatzzeiger auf den ersten gefundenen gesetzt wird.
Beispiel: wenn mehrere den Vornamen Gustav haben setzt Locate immer auf den ersten gefundenen.
Heidfeldfreak Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 17.04.11 13:55 
heißt das ich muss die Vornamen von Hand eingeben, oder ließt er diese aus der Datenbank ab?!
Das ist mein Problem. Ich hab keine Ahnung, wie ich hinbekomme, dass er die Vornamen selber aus meiner Tabelle sucht?!
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 18.04.11 22:51 
user profile iconHeidfeldfreak hat folgendes geschrieben Zum zitierten Posting springen:
heißt das ich muss die Vornamen von Hand eingeben, oder ließt er diese aus der Datenbank ab?!
Das ist mein Problem. Ich hab keine Ahnung, wie ich hinbekomme, dass er die Vornamen selber aus meiner Tabelle sucht?!

Möchtest du, daß dir alle Einträge in deiner Datenbank angezeigt werden, die den gesuchten Vornamen aufweisen? Oder möchtest du einen ganz bestimmten Eintrag finden, für den du dann aber Vor- und Nachname, eventuell sogar noch weitere Eigenschaften wie Wohnort oder Geburtsdatum des Gesuchten vorgeben mußt (schließlich gibt es den Hans Müller und die Petra Maier vielleicht öfter). Wenn du via Locate einen Datensatz findest, nämlich den ersten, der z.B. "Michael" heißt, du aber nicht den Michael Schmidt, sondern den Michael Heller suchst, genügt der Vorname als Suchkriterium nicht. Suchst du alle, die den Vornamen Michael besitzen, benötigst du eine DBGrid zur Anzeige, die du mit einem Select-Befehl füllst: SELECT * FROM TabelleNamen WHERE Vorname='Michael';

Zeig uns doch einmal, wie deine Tabellenstruktur aussieht.