Einzelnen Beitrag anzeigen

kongo

Registriert seit: 10. Dez 2004
6 Beiträge
 
#3

Re: Werte aus einer DBComboBox in eine andere übernehmen

  Alt 2. Mär 2005, 19:51
Hallo Stevie,

erstmal danke für Dein Interesse,
die DB enthält u.a. drei Felder, die nur mit bestimmten Werten belegt werden dürfen. Diese Werte sind als Items in drei DBComboBox-Komponenten hinterlegt. Mit der Auswahl eines Wertes wird gleichzeitig ein Wert vom Typ SINGLE in die DB geschrieben, mit dem später etwas berechnet wird. Die Zuweisung erfolgt beim OnChange-Ereignis über case-Anweisung:

Delphi-Quellcode:
procedure TForm1.DBComboBox1Change(Sender: TObject);
begin
  ADOTable1.Edit;
   case DBComboBox1.ItemIndex of
    0: ADOTable1.FieldByName('UC_SpCA').AsFloat := 0.112;
    (..)
    7: ADOTable1.FieldByName('UC_SpCA').AsFloat := 0.173;
    end
end;
Das klappt soweit auch wie gewünscht. Da es allerdings oft der Fall ist, das der Nutzer drei mal den gleichen Wert auswählen möchte, habe ich ein PopupMenu eingebaut mit dem es möglich sein soll den Wert aus DBComboBox1 in DBComboBox2 und DBComboBox3 zu übernehmen.
Da natürlich auch der SINGLE-Wert übernommen werden soll, dachte ich mir in meiner naiven Birne, mache ich das am Besten über ItemIndex:

Delphi-Quellcode:
procedure TForm1.copy1Click(Sender: TObject);
begin
  DBComboBox2.ItemIndex := DBComboBox1.ItemIndex;
  DBComboBox3.ItemIndex := DBComboBox1.ItemIndex;
end;
Das klappt allerdings nur zum Teil, es steht zwar in allen DBComboBoxen der gleiche Wert, aber die SINGLE-Werte werden wohl deshalb nicht übernommen, weil das OnChange-Ereignis für die anderen DBComboBoxen gar nicht stattfindet wenn ich den ItemIndex gleichsetze.
Wie komme ich da raus ohne alles umzuschreiben?

Das zweite Problem ist, dass die 'kopierten' Werte nicht in die DB geschrieben werden. Sobald ADOTable1.Post; ausgelöst wird, sind DBComboBox1 und 2 wieder 'leer' (ItemIndex: -1) und die entsprechenden DB-Felder auch.

Ich hoffe, Du siehst jetzt etwas klarer..
gruß, kongo
Als ob wir ganz genau wüßten, wo wir hinwollen...
  Mit Zitat antworten Zitat