Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi combobox problem (https://www.delphipraxis.net/29970-combobox-problem.html)

eddy23 17. Sep 2004 16:17


combobox problem
 
hi all



ich nutzte eine access db, und eine ado connection. Habe in Form 1 meine eingaben (zb name und datum, vorname), und speichere die Daten in der datenbank.

nun soll in der combobox die "namen"- Spalte aus der access db gelesen werden, und die andern datenssätze sollen damit gesteuert werden. hum is das verwirrt


Bsp:


Eingabe: Name Datum Vorname
Richter 17.09.2004 Gerdrut
Müller 16.09.2004 Michael


Ausgabe: in der combobox sollen nun richter und müller stehen, wenn ic hdie auswähle, soll in anderen feldern, die zugehörigen daten erscheinen .D


hoffe ihr versteht mich danke :D

jfheins 17. Sep 2004 16:45

Re: combobox problem
 
So vertwirrend nun auch nicht.

Du liest die andern sachen einfach in OnChange-Event aus

eddy23 18. Sep 2004 10:13

Re: combobox problem
 
öhm ja, verstehe ich ned ganz

das problem ist, hab ich vergessen zu erwähnen, das in meiner combobox nix angzeigt wird, wenn ich die ado connection aufgebaut habe

eddy23 21. Sep 2004 15:07

Re: combobox problem
 
kann mir keiner helfen ?

Luckie 21. Sep 2004 15:12

Re: combobox problem
 
Zitat:

Zitat von eddy23
das problem ist, hab ich vergessen zu erwähnen, das in meiner combobox nix angzeigt wird, wenn ich die ado connection aufgebaut habe

Dann solltest du eventuell erstmal das Problem lösen. Da es aber nichts mit deiner ursprünglichen Frage zu tun hat und wohl eher ein datenbank Problem ist, solltest du die entsprechende Frage in der DB-Sparte stellen.

eddy23 21. Sep 2004 19:31

Re: combobox problem
 
wieso, wir sind hier doch in datenbanken sparte, und ich denk mal das das mit was zu tun hat, darum frage ich ja hier


zb wenn ich dbgrid nehme funzt es wird alles angezeigt, nur mit der combobox halt ned, die aber gleich auch meine datensätze steuern soll

Sharky 22. Sep 2004 06:55

Re: combobox problem
 
Zitat:

Zitat von eddy23
... nur mit der combobox halt ned, die aber gleich auch meine datensätze steuern soll

Hai eddy23,

ich glaube hier liegt ein kleines "Verständnissproblem" vor ;-)
Mit einer DBCombobox kannst Du nicht in einer Tabelle navigieren! Mit dieser kannst Du dem Datenfeld das Du in DataField angegeben hast einen Wert zuweisen der entweder in die Combobox eingetippt wird oder ein Wert der aus der Eigenschaft Items ausgewählt wird.

Wenn Du mit einer "Combobox" in deiner Tabelle navigieren möchtest kannst Du dafür eine DBLookupCombobox missbrauchen.
Zuerst aber mal die "offizielle" Verwendung der DbLCb.
Diese ist dafür da um im Feld DataField der Tabelle DataSource den Wert aus dem Feld KeyField der Tabelle ListSource zuweisen zu können. Angezeigt wird in der DbLCb das Feld ListField aus der Tabelle ListSource.

Uff... schöner Satz oder? :stupid:

Ein klassiches Beispiel dafür ist zum Beispiel das Speichern von Anreden in einer Adress-Tabelle:
Code:
Adress-Tabelle
adress_id : Integer
anrede_id : Integer
name     : String
vorname  : String
Code:
Anreden-Tabelle
anrede_id : Integer
anrede   : String
Die Eigenschaften der DBLookupComboBox wären jetzt so:
Code:
DataSource : Adress-Tabelle
DataField : anreden_id
ListSource : Anreden-Tabelle
KeyField  : anreden_id
ListField : anrede
So könnte man mit Hilfe der DbLCb die Anrede ändern.

Aber das alles möchtest Du ja überhaupt nicht :lol:
Du möchtest nur mit Hilfe einer ComboBox in eine Tabelle navigieren. Ganz einfach. Lasse DataSource und DataField unbenutzt.
Möchtest Du zum Beispiel durch die Adress-Tabelle navigieren setze die Eigenschaften so:
Code:
DataSource :
DataField :
ListSource : Adress-Tabelle
KeyField  : adress_id
ListField : name
Einen kleinen Fehler hat das ganze aber! Wenn Du auf andere Weise durch deine Tabelle navigierts (DBGrid, .Next, .First usw) bekommt die DbLCb das nicht mit. In diesem Fall müsstest Du dich von Hand darum kümmern das die Anzeige dort stimmt.

So, ich hoffe das hilft Dir etwas weiter.

nieurig 22. Sep 2004 07:37

Re: combobox problem
 
Hallo,
ich "mißbrauche" die ComboBox (NICHT DBCombo...) auch oft zum Navigieren in der Datenmenge. Wie Sharky schon gesagt hat, ist hierbei allerdings Handarbeit erforderlich.
z.B. so:
Eine kleine Datenstruktur zur Speicherung der ID in meiner Tabelle
(Jede Tabelle bekommt bei mir eine LongInteger ID als Primary Key)

Delphi-Quellcode:
type aTag = class(TObject)
  ID : Integer;
end;
Dann eine Funktion mit der die Daten einer SQL-Abfrage
SQL-Code:
(z.B. Select Vorname + ' ' + Nachname as AnzeigeText, IDAdresse as AnzWert from Adressen Order by Nachname ASC )
in der ComboBox dargestellt werden:

Delphi-Quellcode:
procedure TDBTools.readDBDaten( SQLAbfrage :String; Combo:TComboBox );
var tmpTag : aTag; tmpStr:String;
begin
  with DBModul.SQLAbfrage do begin
    Close;
    SQL.Clear;
    SQL.Add( SQLAbfrage );
    CursorType := ctOpenForwardOnly;
    Open;

    while not EOF do begin
      tmpStr := FieldbyName('AnzText').asString;
      tmpTag := aTag.Create();
      tmpTag.ID := FieldbyName('AnzWert').asInteger;
      Combo.Items.AddObject( tmpStr,tmpTag);
      next();
    end;
    Close;
    CursorType := ctKeySet;
  end;
end;
Im Programm steht dann im OnChange Event der ComboBox etwa folgendes:

Delphi-Quellcode:
einTag := aTag( meineComboBox.Items.Objects[ meineComboBox.ItemIndex ] );
tmpIDAdresse := einTag.ID;
dann Selektion des Datensatzes via SQL-Statement

Delphi-Quellcode:
"Select * from Adressen where IDAdresse =" + tmpIDAdresse
oder falls die Daten sowieso schon in einer Tabelle verfügbar sind

Delphi-Quellcode:
if ADOTable1.Locate('IDAdresse',tmpIDAdresse) then begin
  // usw.
end;
Ich hoffe es hilft.
Niels

Sharky 22. Sep 2004 07:41

Re: combobox problem
 
Zitat:

Zitat von nieurig
Hallo,
ich "mißbrauche" die ComboBox (NICHT DBCombo...) ...

Uff...Ich habe, da wir in der DB-Sparte sind, ComboBox automatisch mit der DBComboBox gleichgesetzt :wall:

eddy23 22. Sep 2004 12:54

Re: combobox problem
 
danke für die hilfe werde das mal testen


aber ich wollte halöt mit der combobox machen weil die sich für meine programm gut eignet.

ich will ja nicht direkt in der tabelle navigieren. ich will halt nur in der combobox zb alle namen drine stehen haben, die ich vorher in die datenbank gespeichert habe. wenn dann ein name angezeigt wird, will ich nur in anderen datenfeldern, die zugehörigen daten angezeigt haben,



ich dachte das geht

mfg eddy


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz