Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi voneinander abhängige Comboboxen (https://www.delphipraxis.net/90477-voneinander-abhaengige-comboboxen.html)

Fridolin 18. Apr 2007 08:33

Datenbank: mysql • Version: 5.2 • Zugriff über: mydac

voneinander abhängige Comboboxen
 
Guten Morgen,

ich hab folgendes Problem mit meinen Comboboxen...

Ich habe mehrere Comboboxen in abhängigkeit gebracht. Das heisst, wenn ich in der Combobox-Fabrikate VW auswähle, dann werden in der Combobox-Modelle nur Modelle von VW angezeigt. Soweit sogut. Wenn ich jetzt bei Modelle Golf auswähle, dann werden in der Combobox-Motorisierung alle Variante für Golf angezeigt. Mein Problem ist jetzt, dass dann der Eintrag VW bei Combobox-Fabrikate fehlt.

Die Daten kommen aus einer MySQL Datenbank...


Delphi-Quellcode:
 var f, a:string;
begin
  f:=lowercase(fabcombobox1.Text);
    myquery3.SQL.Text:=('select f_id from fabrikate where fabrikat like ''%'+f+'%''');
    myquery3.Execute;
  a:=myquery3.Fields[0].AsString;


    if lowercase(fabcombobox1.Text) = f then
      begin
        modcombobox2.Clear;
        myquery4.SQL.Text:= ('select distinct modell from modelle, bezeichnungen where modelle.m_id = bezeichnungen.m_id and bezeichnungen.f_id = '''+a+''' ');
        myquery4.Execute;
      while not myquery4.Eof do begin
        modcombobox2.Items.Add(myquery4.Fields[0].AsString);
        myquery4.Next;
      end;
    end;

    if lowercase(fabcombobox1.Text) = f then
      begin
        motcombobox4.Clear;
        myquery13.SQL.Text:= ('select distinct motorisierung from motorisierungen, bezeichnungen where motorisierungen.mot_id = bezeichnungen.mot_id and bezeichnungen.f_id = '''+a+''' ');
        myquery13.Execute;
      while not myquery13.Eof do begin
        motcombobox4.Items.Add(myquery13.Fields[0].AsString);
        myquery13.Next;
      end;
    end;
...das ist der Quelltext für die Einschränkung der Daten in den anderen Comboboxen.

Das Problem ist, dass ich ja die anderen Comboboxen leere und dann mit denn betreffenden Daten neu befülle. Wie kann ich Delphi sagen, dass es alles löschen soll, außer dem Wert den ich in der Combobox an geklickt hatte???

Ich hoffe ich hab mich einigermaßen verständlich ausgedrückt...

MfG

Fridolin

mkinzler 18. Apr 2007 08:38

Re: voneinander abhängige Comboboxen
 
Nimm DBLookupCombos und konfiguriere Master/Detail-Beziehung zwicshen den DataSets

Fridolin 18. Apr 2007 08:40

Re: voneinander abhängige Comboboxen
 
Hab ich schon versucht, aber ich komme mit dem Mist nicht klar, bin wohl zu doof dafür :oops:

Kann man das nicht anders regeln?

mkinzler 18. Apr 2007 08:43

Re: voneinander abhängige Comboboxen
 
Du könntest du im .AfterScroll des Master-DataSets die Neubestückung der 2. ComboBox vornehmen.

Geronimo 18. Apr 2007 08:45

Re: voneinander abhängige Comboboxen
 
Guten Morgen,

... selektierten Eintrag mit ItemIndex merken und alle
anderen Items in einer Schleife löschen.

Ich würde allerdings die DB so organisieren, dass
in einem Datensatz Marke, Modell und Motorisierung
stehen. Dann weis ich immer, das Golf auch VW ist und
kann das in die Combo eintragen.

hoika 18. Apr 2007 08:55

Re: voneinander abhängige Comboboxen
 
Hallo,

ich würde mir die in ItemIndex stehenden Einträge
in Variablen merken, die ComboBoxen komplett löschen
und dann alles wieder eintragen incl. der gemerkten
(so richtig hatte ich das Problem nicht verstanden ... ;) )


Heiko

Fridolin 18. Apr 2007 09:06

Re: voneinander abhängige Comboboxen
 
Danke für die Hilfe, klappt jetzt... :hello:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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