Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBComboBox Items zur Laufzeit adden bzw. aktualisieren ? (https://www.delphipraxis.net/151686-dbcombobox-items-zur-laufzeit-adden-bzw-aktualisieren.html)

interminator 28. Mai 2010 07:11

Datenbank: MySql • Zugriff über: ZEOS

DBComboBox Items zur Laufzeit adden bzw. aktualisieren ?
 
Hallo.
Ich hab ein Problem mit der DBComboBox. (VolgaDB, normale DBComboBox geht auch nicht)
Ich schreibe ein Reifen-/Rädereinlagerungsprogramm und habe 2 Tabellen:

1. KFZ
2. Radeinlagerung

In der Tabelle "KFZ" habe ich 4 Felder (REIFEN1 ...)
In der Tabelle "Radeinlagerung" habe ich 1 Feld (REIFENAUSWAHL) auf das die DBComboBox zugreift.

nun füge ich die Items der DBComboBox zur Laufzeit hinzu:

Delphi-Quellcode:
ReifAuswahlCB.ComboProps.ComboItems.Clear;
ReifAuswahlCB.ComboProps.ComboItems.Add('1: ' + KFZQueryREIFEN1.AsString);
ReifAuswahlCB.ComboProps.ComboItems.Add('2: ' + KFZQueryREIFEN2.AsString);
ReifAuswahlCB.ComboProps.ComboItems.Add('3: ' + KFZQueryREIFEN3.AsString);
ReifAuswahlCB.ComboProps.ComboItems.Add('4: ' + KFZQueryREIFEN4.AsString);
Das klappt soweit ja auch ganz gut.
Mein Problem: wenn ich in meinem KFZ-Formular nun das DBEdit-Feld z.B. REIFEN1 ändere und in die Datenbank übernehme,
ändert es in meinem Radeinlagerungsformular die Items in der DBComboBox nicht (also nur den Text). Wähle ich ein Item aus, wird der richtige Text aus REIFEN1 in die Datenbank eingefügt obwohl in der DBComboBox-Auswahl ein anderer drin steht.

Ich suche eine Möglichkeit die DBComboBox nach Änderung von z.B. REIFEN1 zu aktualisieren (Refresh geht jedenfalls nicht).

Vielleicht hat ja jemand ne Idee?

MfG
Int.

exilant 28. Mai 2010 10:08

Re: DBComboBox Items zur Laufzeit adden bzw. aktualisieren ?
 
Datengebundene Komponenten sind fies.
Wenn es aber sein muss hilft in Deinem Fall "DBLookupComboBox".

mkinzler 28. Mai 2010 10:12

Re: DBComboBox Items zur Laufzeit adden bzw. aktualisieren ?
 
Wenn die auszuwählenden daten aus einer Datenbank stammen. Man kann hierfür aber auch eine virtuelles DataSet ( MemDataSet) verwenden

interminator 28. Mai 2010 10:21

Re: DBComboBox Items zur Laufzeit adden bzw. aktualisieren ?
 
Zitat:

Zitat von mkinzler
Wenn die auszuwählenden daten aus einer Datenbank stammen. Man kann hierfür aber auch eine virtuelles DataSet ( MemDataSet) verwenden

:gruebel: ich nix verstehen.

mkinzler 28. Mai 2010 10:23

Re: DBComboBox Items zur Laufzeit adden bzw. aktualisieren ?
 
Eine Db Lookup-Komponente ist mit 2 DataSourcen verknüpft, eine für die Auswahlmenge und eine als Zielmenge.

interminator 28. Mai 2010 10:37

Re: DBComboBox Items zur Laufzeit adden bzw. aktualisieren ?
 
und wie erkläre ich der DBLookupComboBox die 4 Felder?
es wird immer nur 1 Feld richtig angezeigt :shock:

mkinzler 28. Mai 2010 10:39

Re: DBComboBox Items zur Laufzeit adden bzw. aktualisieren ?
 
Durch hinzufügen in die verknüpfte Lookup-Datenmenge und ggf. deren Refresh erscheinen diese dann in der Auswahl.

interminator 28. Mai 2010 10:45

Re: DBComboBox Items zur Laufzeit adden bzw. aktualisieren ?
 
entschuldige bitte die blöde Frage. aber wie füge ich die Felder zur Laufzeit hinzu ?

mkinzler 28. Mai 2010 10:48

Re: DBComboBox Items zur Laufzeit adden bzw. aktualisieren ?
 
Du wirst wohl wissen, wie man zu einer Datenbank(tabelle) Einträge hinzufügt? :gruebel:

interminator 28. Mai 2010 10:53

Re: DBComboBox Items zur Laufzeit adden bzw. aktualisieren ?
 
nein, das meine ich nicht. die Felder sind ja schon vorhanden.
für jedes KFZ ein anderer Reifen (4 verschiedene Reifenarten sind möglich).

mkinzler 28. Mai 2010 11:50

Re: DBComboBox Items zur Laufzeit adden bzw. aktualisieren ?
 
Bei einer (DB-)Lookup-Kompo kommen die Einträge aus einem DataSet, man muss neue Einträge also dort einfügen.

exilant 28. Mai 2010 12:28

Re: DBComboBox Items zur Laufzeit adden bzw. aktualisieren ?
 
Zitat:

Zitat von interminator
Mein Problem: wenn ich in meinem KFZ-Formular nun das DBEdit-Feld z.B. REIFEN1 ändere und in die Datenbank übernehme,
ändert es in meinem Radeinlagerungsformular die Items in der DBComboBox nicht (also nur den Text). Wähle ich ein Item aus, wird der richtige Text aus REIFEN1 in die Datenbank eingefügt obwohl in der DBComboBox-Auswahl ein anderer drin steht.

Also: Du änderst REIFEN1 in einem DBEdit und schreibst es in eine Tabelle weg (Post oder so)?

Wenn das so ist dann geht doch einfach folgender Weg:

An diese Stelle sollte auf jeden Fall irgenein Event feuern (OnAfterPost oder sowas)

In diesem Event "clearst" Du die Combobox mittels ->meinereifencombobox.items.clear;

Dann führst Du die gleiche Initialisierung durch wie zu Anfang. (combobox.items.add)

interminator 28. Mai 2010 13:39

Re: DBComboBox Items zur Laufzeit adden bzw. aktualisieren ?
 
@exilant:

Die Items füge ich ja in der KFZQuery.AfterPost ein!
wenn das gehen würde wäre ich ja nie auf die Idee gekommen hier im Forum mein Leid zu beklagen!

exilant 28. Mai 2010 14:02

Re: DBComboBox Items zur Laufzeit adden bzw. aktualisieren ?
 
Zitat:

Zitat von interminator
@exilant:

Die Items füge ich ja in der KFZQuery.AfterPost ein!
wenn das gehen würde wäre ich ja nie auf die Idee gekommen hier im Forum mein Leid zu beklagen!

OK. Benutzt Du ein transaktionsfähiges Backend von MySQL? Ich kenne jetzt weder ZEOS noch MySQL,
aber es sieht nach einem Problem mit den Isolationslevels aus. Wie funktioniert (so vorhanden) Deine Transaktionssteuerung?
Wenn NACH dem "post" die richtigen Daten nicht in der Tabelle aus der Du sie holen willst drinstehen, sind sie vermutlich noch nicht "committed" und damit für ein andeses Query mit dem Transaktionslevel "readcommitted" (was meistens die Defaulteinstellung ist) nicht sichtbar. Ich arbeite nicht mit diesen tDataset Geschichten. Die machen einem das Leben schwerer statt einfacher.

interminator 28. Mai 2010 14:50

Re: DBComboBox Items zur Laufzeit adden bzw. aktualisieren ?
 
die Daten werden aber richtig in die Datenbank geschrieben (nach dem Post)!!!
die Daten lassen sich auch mit der DBComboBox abrufen jedoch steht für die Items der Text vor dem Post noch drin !

mkinzler 28. Mai 2010 14:58

Re: DBComboBox Items zur Laufzeit adden bzw. aktualisieren ?
 
Eine DBComboBox zeigt auch keine Daten aus der Datenbank an ( dafür dient, wie schon erwähnt die Lookupvariante)

interminator 31. Mai 2010 16:21

Re: DBComboBox Items zur Laufzeit adden bzw. aktualisieren ?
 
Habs jetzt hinbekommen, zumindest mit der DBComboBox.
Die DBComboBox von VolgaDBEdit funzt nach wie vor immer noch nicht. für Ideen habe ich immer ein Ohr offen.

MfG
int.


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