AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Werte aus einer DBComboBox in eine andere übernehmen
Thema durchsuchen
Ansicht
Themen-Optionen

Werte aus einer DBComboBox in eine andere übernehmen

Offene Frage von "kongo"
Ein Thema von kongo · begonnen am 28. Feb 2005 · letzter Beitrag vom 8. Mär 2005
Antwort Antwort
kongo

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

Werte aus einer DBComboBox in eine andere übernehmen

  Alt 28. Feb 2005, 20:38
Datenbank: MS Access • Zugriff über: ADO
N'abend,
ich wähle Werte für die Eingabe in eine ADO/Access-DB aus einer DBComboBox aus. Diese Werte sind über ItemIndex mit Konstanten belegt. Die Zuweisung der Konstanten erfolgt über das OnChange-Ereignis mittels case-Anweisung. Nun möchte ich über ein PopupMenu die Möglichkeit bieten, den ausgewählten Wert zwei anderen, mit den selben Items gefüllten DBComboBox-Komponenten zuzuweisen. Irgendwie steh' ich jetzt im Wald, weil 1.:
bei (sinngemäß) DBComboBox2.ItemIndex := DBComboBox1.ItemIndex vermutlich kein OnChange-Ereignis ausgelöst wird und somit keine Konstantenzuweisung erfolgt und 2.:
der Eintrag nach ADOTable1.Post aus der DBComboBox verschwunden ist und natürlich auch nicht in der DB steht. Die Struktur der Access-DB darf nicht verändert werden.
Weiß jemand Rat bzw. einen anderen Weg?
Als ob wir ganz genau wüßten, wo wir hinwollen...
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

Re: Werte aus einer DBComboBox in eine andere übernehmen

  Alt 2. Mär 2005, 08:28
Hi kongo,

könntest du dein Problem bitte etwas erläutern, ich blick - ehrlich gesagt - noch nicht ganz dahinter...
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
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
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#4

Re: Werte aus einer DBComboBox in eine andere übernehmen

  Alt 2. Mär 2005, 20:17
hallo kongo,

ich weis nicht, ob das mit dbcombobox geht, aber ein versuch ist es wert
Delphi-Quellcode:

deinclick
begin
  DBComboBox2.items.add(DBComboBox1.items[DBComboBox1.itemindex]);

end;
raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
kongo

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

Re: Werte aus einer DBComboBox in eine andere übernehmen

  Alt 2. Mär 2005, 21:26
Hallo kiar,
danke für Deinen Vorschlag, aber ich fürchte, Du hast mein Problem missverstanden (oder ich habe es immer noch nicht richtig dargestellt ). Die Items sind in allen drei DBComboBoxen gleich. Ich suche eine Möglichkeit, bei der Auswahl des Items der ersten DBCB (ich mag das jetzt nicht mehr ausschreiben) die anderen beiden 'automatisch' gleichzusetzen, wobei dabei für DBCB2 und DBCB3 ein OnChange-Ereignis ausgelöst werden muß.
Als Voraussetzung habe ich das PopupMenu mit RadioItems bestückt:
Delphi-Quellcode:
if PopupRadioItem1.Checked then begin
{setze DBCB2 und 3 gleich DBCB1}
(..)
end;
Habe auch schon CopySelection ausprobiert, das fügt mir aber nur einen weiteren Items-Eintrag hinzu.
Da muss es doch einen (simplen) Weg geben!?
gruß, kongo
Als ob wir ganz genau wüßten, wo wir hinwollen...
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

Re: Werte aus einer DBComboBox in eine andere übernehmen

  Alt 3. Mär 2005, 07:57
Ah, jetzt versteh ich dein Problem - glaube ich...

Erstens solltest du keine DBComboBoxen nehmen, sondern "normale". DBComboBoxen sind dafür da, den Wert, der ausgewählt wurde, auch in dem Feld zu speichern, aber das machst du scheinbar nicht - du speicherst ja intern nen anderen Wert ab, als der Benutzer auswählt. Wenn du einen Datensatz holst, musst du selbstverständlich den umgekehrten Weg gehen - aus dem Wert im Feld das dazugehörige Item in der ComboBox auswählen. Wenn du die anderen beiden auch auf diesen Wert stellen möchtest, dann ruf doch nach dem Setzen des richtigen Item-Indizes das OnChange-Event für die beiden ComboBoxen auf (Sender kann ruhig nil sein, wenn du ihn nicht benutzt).

Ich hoffe, jetzt hab ich mich verständlich ausgedrückt
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#7

Re: Werte aus einer DBComboBox in eine andere übernehmen

  Alt 3. Mär 2005, 11:12
hallo kongo,

versuche es so:

Delphi-Quellcode:
procedure TForm1.CB1Change(Sender: TObject);
begin
       CB2.ItemIndex:= CB1.ItemIndex;
       CB3.ItemIndex:= CB1.ItemIndex;
       if CB2.ItemIndex <> -1 then
          CB2.OnChange(CB2);
          if CB3.ItemIndex <> -1 then
             CB3.OnChange(CB3);
end;

procedure TForm1.CB2Change(Sender: TObject);
begin
     Showmessage('Cb2.Change');
end;

procedure TForm1.CB3Change(Sender: TObject);
begin
      Showmessage('CB3.Change');
end;
raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
kongo

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

Re: Werte aus einer DBComboBox in eine andere übernehmen

  Alt 8. Mär 2005, 19:24
Hallo kiar & Stevie,

vielen Dank nochmal, ich habe es zwar erstmal auf eine etwas umständliche und unschöne Art gelöst,
Delphi-Quellcode:
case DBComboBox1.ItemIndex of
0 : begin a := 0.112; (..)end;

(..)

if ind_type.Checked then begin
    ADOTable1.FieldByName('DataField von ComboBox2').AsString :=
    DBComboBox1.Text;
    ADOTable1.FieldByName('b').AsFloat := a;
    end;
werde aber eure Vorschläge auf jeden Fall noch ausprobieren und an dieser Stelle kommentieren.
Muss jetzt aber erstmal andere 'Probleme' angehen..

Gruß,
kongo
Als ob wir ganz genau wüßten, wo wir hinwollen...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 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