machohunk
Goto Top

Access (VBA) - wie mit Combobox (Hauptformular) Wert der Combobox im Unterformular (Endlosformular) einstellen bzw. ändern?

Hallo,

ich habe in Access ein Unterformular (Endlosformular) erstellt (siehe Bildausschnitt B). In diesem UFo ist eine gebundene Combobox eingefügt, mit der für jeden Datensatz ein anderer Wert (Währungskürzel) eingestellt werden kann. Das funktioniert und die Werte werden auch nach erneutem öffnen des Formulars wieder genau so angezeigt.
Nun besteht folgendes Problem:
Das o.g. UFo ist in ein Hauptformular integriert. Mit einer "übergeordneten" Combobox (ungebunden), die sich im Detailbereich des Hauptformulars befindet (siehe Bildausschnitt A), soll es möglich sein, für alle Datensätze des UFo's den Wert der Combobox umzustellen, so das überall dasselbe Währungskürzel erscheint.
Da alle meine Versuche bisher gescheitert sind, benötige ich hier Hilfe.
Wie wird so etwas programmiert?
bild

Content-Key: 309795

Url: https://administrator.de/contentid/309795

Ausgedruckt am: 29.03.2024 um 06:03 Uhr

Mitglied: 129813
Lösung 129813 14.07.2016 um 11:24:58 Uhr
Goto Top
Have a look at this demo database:
https://we.tl/UwvloIWI2b

Regards
Mitglied: machohunk
machohunk 14.07.2016 um 12:18:38 Uhr
Goto Top
Zitat von @129813:

Have a look at this demo database:
https://we.tl/UwvloIWI2b

Regards

Leider lassen die Sicherheitsbestimmungen hier keinen Download zu.

Gruß
cu
Mitglied: 129813
Lösung 129813 14.07.2016 aktualisiert um 12:21:40 Uhr
Goto Top
Send me your mail address via PM then i can send you this db. Without the db you won't not understand the code ...

But here it is:
Private Sub comboCurrency_Change()
    DoCmd.SetWarnings False
    DoCmd.RunSQL "UPDATE currencylist SET currencylist.currency = " & Me.comboCurrency.Value
    Me.currencylist_subform.Requery
    DoCmd.SetWarnings True
End Sub
Mitglied: machohunk
machohunk 14.07.2016 aktualisiert um 14:53:02 Uhr
Goto Top
Es geht in kleinen Schritten voran, ist aber nocht nicht perfekt. face-wink

Ich habe den Code wie folgt angepasst:
Private Sub cboHauptformularWaehrung_Change()
    DoCmd.SetWarnings False
    DoCmd.RunSQL "UPDATE tabAuftrag SET tabAuftrag.Waehrung = " & Me.cboHauptformularWaehrung.Value  
    Me.cboUnterformularWaehrung.Requery
    Forms!frmHauptformular!frmUnterformular!cboUnterformularWaehrung
    DoCmd.SetWarnings True
End Sub

Wenn ich nun in der Combobox im Hauptformular (Bildausschnitt A) einen anderen Wert einstelle, erscheint unnötigerweise eine Parameterabfrage (Bildauschnitt C). Wenn ich dort einen Wert eingebe und diesen bestätige werden im Unterformular die Werte zwar geändert und in der Tabelle gespeichert, aber leider bei ALLEN Datensätzen, also auch bei denen die NICHT im Unterformular ausgewählt worden sind.

bild3
Gruß
cu
Mitglied: 129813
Lösung 129813 14.07.2016 aktualisiert um 15:28:17 Uhr
Goto Top
Then you only need to update the SQL Query with an additional where condition which checks if the field is empty or not.
DoCmd.RunSQL "UPDATE tabAuftrag SET tabAuftrag.Waehrung = " & Me.cboHauptformularWaehrung.Value & " where tabAuftrag.Waehrung <> ''"  
We don't know how your tables are structured, and which column types you are using!!!. I told you that you need the demo db to understand it completely face-smile because I am using multiple tables for the values and i use the reference ids.
Mitglied: machohunk
machohunk 18.07.2016 um 11:28:37 Uhr
Goto Top
Vielen Dank für deine Unterstützung. Dein Ansatz hat sehr zur Lösung meines Problems beigetragen.
Die o.g. Parameterabfrage erfolgte, weil in der Tabelle als Felddatentyp "Text" eingestellt ist. Das musste im Code noch berücksichtigt werden.


Gruß
cu