Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MyBase Datenbank für Name und Phonenummer (https://www.delphipraxis.net/54809-mybase-datenbank-fuer-name-und-phonenummer.html)

noiser 11. Okt 2005 19:08

Datenbank: MyBase • Zugriff über: ?

MyBase Datenbank für Name und Phonenummer
 
hallo allerseits!

ich habe folgendes problem. i benutze eine tabelle in welche ich mit hilfe eines TDBGrid
jeweis den namen und die dazugehörige telefonnummer speichert.

nun sollte ich in einer combobox den namen auswählen können, dann schreibt es mir die
dazugehörige nummer in ein edit feld.

wie kann ich das anstellen?

vielen dank für eure hilfe!

mfg

noiser

Pfoto 12. Okt 2005 11:06

Re: MyBase Datenbank für Name und Phonenummer
 
Willkommen im Forum, noiser!

Zwar bin ich auch noch ein Beginner, aber ich glaube, trotzdem eine Lösung anbieten zu können.

Je nachdem, ob du die Namen direkt aus der Tabelle oder aus einem Query lesen willst, gehst du diese "Liste" an Einträgen durch und übergibst die vorhandenen Namen an eine LookupCombo.

etwa so
Delphi-Quellcode:
Combobox1.Clear;
While not Query.Eof do  // Im Beispiel wird von einem Ergebnis in einer Query ausgegangen
begin
  Combobox1.Items.Add(FieldByName('Name').AsString) // Für "Name" die Bez. Deiner Tab.-Spalte
end;
In OnClick-Ereignis der Combobox kannst du dann den Index und somit den Namen abfragen und mit dem Befehl "Locate" intern zum Datensatz der Query bzw. deiner Tabelle springen.

Delphi-Quellcode:
...ComboBox1Click(Sender: TObject);
begin
  with Query do
   If Locate('Name', ComboBox1.Items[Combobox1.ItemIndex], []) then
    Edit1.Text:= FieldByName('Telefonnummer').AsString;
end;

Natürlich ist die Sache noch nicht perfekt mit Locate, denn wenn ein Name doppelt vorkommt, springt er nur zum ersten Datensatz. Man könnte auch den Itemindex der Combobox dafür nutzen, um zur entsprechenden Nummer in der Tabelle bzw. des Querys zu springen.
(Ich weiß jetzt nicht auswending, ob der Befehl RecNo immer funktioniert, sonst könntest Du den Cursor intern damit auf den entsprechenden Datensatz setzen)


Sicherlich kann dir ein Profi noch mehr dazu sagen.

Gruß
Pfoto

Pfoto 12. Okt 2005 14:00

Re: MyBase Datenbank für Name und Phonenummer
 
Stop! Ich habe da noch ein kleines "Next" vergessen und ein "Query" vor "FieldByName" wäre auch nicht schlecht.

Delphi-Quellcode:
Combobox1.Clear;
While not Query.Eof do  // Im Beispiel wird von einem Ergebnis in einer Query ausgegangen
begin
  Combobox1.Items.Add(Query.FieldByName('Name').AsString) // Für "Name" die Bez. Deiner Tab.-Spalte
  Next;
end;


Sorry :oops:
Ich hoffe, es sind nicht noch mehr Fehler drin...

Pfoto

noiser 13. Okt 2005 19:10

Re: MyBase Datenbank für Name und Phonenummer
 
hi pfoto

vielen dank für eine tipps.

leider begreife ich nicht was es mit dem "Query" auf sich hat.

die daten werden jeweils in einem xml file abgelegt . ausserdem verwende
ich für das dbgrid ein tclientdataset und ein tdatasource.

mfg
noiser

MagicAndre1981 13. Okt 2005 22:19

Re: MyBase Datenbank für Name und Phonenummer
 
Hallo,

schau dir mal das Tutorial zum Thema MyBase auf Delphi-Source - dem Delphi-Treff an.

André

Pfoto 14. Okt 2005 08:54

Re: MyBase Datenbank für Name und Phonenummer
 
Zitat:

Zitat von noiser
leider begreife ich nicht was es mit dem "Query" auf sich hat.

Mit der "Query" kannst Du eine SQL-Abfrage über mehrere Tabellen machen. Das Ergebnis lässt sich dann über dieses Objekt ansprechen. Du kannst aber genauso gut Deinen Tabellennamen anstatt "Query" einsetzen -- dann kannst Du halt nur auf diese eine Tabelle zugreifen.
Es ist also egal, wo die Datenbank die Daten herholt (z.B. XML), hauptsache Du kannst sie Zeile für Zeile ansprechen (siehe Quell-Code Zeile: "While not EOF do...")
Wie genau das mit MyBase funktioniert, weiß ich nicht, schau halt mal im Tutorial.

Gruß
Pfoto


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 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-2025 by Thomas Breitkreuz