Entwickler-Ecke

Datenbanken - alle Einträge eines Tablefeldes in Listbox ...


KeinePanik - Mo 15.07.02 23:22
Titel: alle Einträge eines Tablefeldes in Listbox ...
Ich will also alle Einträge, die unter einem bestimmten Feld in einer Paradox7-Datenbank gespeichert sind in eine Listbox schreiben ...

... wie geht denn das ?

(hab mich seit heute überhaupt erstmal mit Datenbanken beschäftigt ... klappt aber ganz gut :) )


wwerner - Di 16.07.02 06:45

Wie weit bist du? Wo ist das Problem?

Skizze:

Zitat:
While not eof do
begin
Datensatz anfügen
Nächster DS
end;


KeinePanik - Di 16.07.02 16:12

Also gut ... um das zu lernen hab ich mich erstmal von MEINEM Programm distanziert und hab mir mal als Beispiel ein Adressprogramm angelegt ... Habe Eben eine Datenbank mit Name, Nachname ... usw ...
Wenn das Programm gestartet wurde, sollen z.B. alle Namen, die in der Bank vorhanden sind in einer listbox angezeigt werden :


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.FormActivate(Sender: TObject);
var   count: integer;
begin
max := data1.Table1.FieldCount;
for count:=0 to max do
begin
listbox1.items.add( {Hier eben die einzelnen Werte für jedes "Field" lesen ??} );
end;
end;


Ich brauche also die "Value" von "Name" jedes Indexes !

Ich hoffe das ist verständlicher !?


Buggi - Di 16.07.02 17:06

keine Panik KeinePanik,

versuchs mal so:

Quelltext
1:
2:
3:
4:
5:
6:
  table1.First;
  while not table1.Eof do
  begin
       listbox1.items.add(table1['Name']);
       t.Next;
  end;

Das sollte funzen.

Good luck :wink:


Buggi - Di 16.07.02 17:08

Entschuldige,
hab jetzt erst gesehen, was Du gemeint hast. Ich meld mich gleich nochmal.


Buggi - Di 16.07.02 17:24

So nu aber:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
count := 0;
max := t.FieldDefs.Count;
 while (count < max ) do
 begin
  listbox1.Items.Add(format('%s',
       [t.fielddefs[count].name]));
  inc(count);
 end;

Hoffe das meintest Du.

Gruß Buggi


KeinePanik - Di 16.07.02 23:07

yo ... das wars !!!!

Dank Dir !


KeinePanik - Do 18.07.02 03:53

Ok ... soweit so gut ... Aber:

Als Beispiel nehmen wir mal wieder das AdressProgramm :

BSP:
In meiner Listbox stehen jetzt also die (Vor-) Namen ... jetzt will ich zu jedem Namen auch die dazugehörige Telefonnummer wissen und in (z.B.) Label anzeigen lassen ...

Bisher hab ich probiert es über den index der listbox, die entsprechenden Einträge zu finden ... allerdings hab ich es nicht gefunden ....

Es muss doch irgendwie möglich sein, durch den index (Zeilennummer der DB) die restlichen Einträge lesen zu können ...

Also ich klicke in meiner Listbox den Namen ''Schmidt'' (er existiert erstmal nur einmal) an und bekomme dann in einem Label (!?egal!?) die entsprechende Telefonnummer angezeigt (die schon in der DB gespeichert ist) ....

Hab schon ein paar Mal probiert aber leider nix gefunden ... wie ruft man das also jetzt auf ?


KeinePanik - Do 18.07.02 03:57

Mit anderen Worten :

Lese von Nachnamen "Schmidt"(Zeile3 (3=index)) die dazugehörige Telefonnummer


Buggi - Do 18.07.02 16:48

Hi,

das mit dem Index ist so 'ne Sache. Wenn ich mich nicht ganz irre, stimmt der Index deiner Listbox nicht unbedingt mit dem deiner Datenbank überein. Am einfachsten wärs wohl, wenn du die Lookup-Funktion von TTable nutzt.

Quelltext
1:
function Lookup(const KeyFields: string; const KeyValues: Variant; const ResultFields: string) : Variant;                    

Probiers mal.

Gruß Buggi


KeinePanik - Do 18.07.02 21:55

Zitat:
Wenn ich mich nicht ganz irre, stimmt der Index deiner Listbox nicht unbedingt mit dem deiner Datenbank überein


Sollte eigentlich übereinstimmen ... bei den 5 Einträgen, die ich im Moment in der DB habe ist es zumindest so .... Mit dem Index ist auch nicht ganz so wichtig ... Wenn es anders geht ...



Zitat:

Quelltext
1:
function Lookup(const KeyFields: string; const KeyValues: Variant; const ResultFields: string) : Variant;                    


Komme da nicht ganz klar !!

Da jetzt beim Anklicken der Namen (in der listbox) die (z.B.) Telefonnummern angezeigt werden sollen, muss ich bei ''Keyfields" also "'Name'" angeben ... was aber bei "Keyvalues" ???? ... Bei resultfields sollte es wieder klat sein, da ich die Tel.Nummern suche muss ich dort also "Telefonnummer" angeben ...

Also: Was muss ich bei "Keyvalues" angeben und liege ich mit meinen Vermutungen richtig ??


KeinePanik - So 21.07.02 01:06

hmmm .... ich KaPiers echt nicht ....