PDA

Vollständige Version anzeigen : Auswahl aus Hfo-Kombifeld in einem Ufo-Kombifeld übernehmen


RookieOne
28.04.2011, 13:16
Hallo zusammen,

in einem Hauptformular wird ein Wert in einem Kombifeld cbo1 gewählt. In einem Endlos-Unterformular steht ein weiteres Kombifeld cbo2.

Ich stehe nun vor der Aufgabe, bei Eingabe eines Datensatzes im Ufo die Auswahl aus cbo1 in cbo2 zu übernehmen.

Die erste Idee: Im Anzeigen-Ereignis des Ufos die Column-Einstellung der Kombis gleichsetzen

Private Sub Form_Current()
Me.cbo2.Column(0) = Forms!frmHF!cbo1.Column(0)
End Sub

Das funktioniert nicht. Hat jemand von Euch eine gute Idee?

Gruß, Daniel

Atrus2711
28.04.2011, 13:23
Hi,

bei Eingabe eines Datensatzes ist doch ein wunderbares Ereignis, im Gegensatz zu Current:

Im Ufo:
Bei Form_BeforeUpdate als Ereignisprozedur eintragen:
Me!DeinFeld = Me.Parent!DeinHFFeld

Alternativ im Hauptform_Current:
Me!Deinufocontrol!DeinUfoKombi.DefaultValue = Me!DeinHFKombi

Bedenke auch, dass der erwünschte Wert im Ufo-Kombi auch verfügbar sein muss.

RookieOne
28.04.2011, 13:49
Hallo, Martin,

danke für die rasche Antwort.

Bedenke auch, dass der erwünschte Wert im Ufo-Kombi auch verfügbar sein muss.

Nun ja, das müsste ja der Fall sein, da beide Ufos jeweils das selbe SQL-Statement als Datenquelle haben und an die selbe Spalte (1) gebunden sind.

Jedoch: Bei Form_BeforeUpdate im Ufo passiert nichts.

Und bei Hauptform_Current wird - als Defaultwert - ein komplett anderer Wert angezeigt, als das Kombi-SQL liefert.

Atrus2711
28.04.2011, 13:59
ein komplett anderer Wert angezeigt, als das Kombi-SQL liefert.
Es wird der Wert der gebundenen Spalte des Kombis gezeigt. Das zugeklappte Kombi zeigt hingegen den Wert der ersten sichtbaren Spalte. Wenn du einen anderen Wert derselben Kombifeld-Auswahlzeile haben willst, nutze Kombifeld.Column(x), wobei x = Spaltennummer (0 = 1. Spalte, 1 = 2. Spate etc).

RookieOne
28.04.2011, 14:15
Hallo, Martin,

deinen Tipp teste ich gleich; zwischenzeitlich bin ich im MOF noch auf einen älteren Beitrag gestoßen:

http://www.ms-office-forum.de/forum/showthread.php?t=245049

Hier wird u.a. der Einsatz einer globalen Variable empfohlen.

Das klingt für mich zunächst plausibel. Wie müsste ich hier vorgehen? Bei cbo1_BeforeUpdate erstmal die Variable dimensionieren? Und diese dann im Ufo-Kombi verwenden?

Gruß, Daniel

Atrus2711
28.04.2011, 14:31
Die globale Variable ist verzichtbar; sie hat auch einige Nachteile (z.B. zu veralten, wenn man nicht überall, wo es nötig ist, dran denkt, sie "mitzuschleifen".

Der Wert steht im HF-Kombi. Da kann er auch geholt werden.

RookieOne
28.04.2011, 15:32
Hallo, Martin,

gut, von der globalen Variable sehe ich erstmal ab.

Der Wert steht im HF-Kombi. Da kann er auch geholt werden

Tut es aber nicht. Auch nicht mit expliziter Column-Angabe, wie von dir empfohlen.

Rätselhaft, da beide Kombis die gleichen Eigenschaften haben. Beide haben nur eine gebundene Spalte (jeweils immer die gleiche Spalte aus dem SQL-Statement) ...

Atrus2711
29.04.2011, 08:05
Lad doch mal hoch. Man kommt da sicher dran, aber irgendwas übersehen wir beide.

RookieOne
29.04.2011, 12:50
Hallo, Martin,

alles klar; ich habe das Szenario in einer kleinen Datenbank nachgebaut; die komplette FE/BE-Lösung wollte ich hier nicht hochladen ;) Anbei die gezippte Acc2003-Datei.

Dank & Gruß, Daniel

Atrus2711
29.04.2011, 12:58
Seh ich das richtig, dass das Kombi im Ufo das synchronisierende Feld im HF/UF-Konstrukt ist?

Dann ist das alles müßig. Ufos stellen das Syncfeld selbsttätig auf den Wert des HF ein. Das macht sie ja gerade zu Ufos.

Ansonsten wäre zu konkretisieren, was bei Eingabe eines Datensatzes im Ufo die Auswahl aus cbo1 in cbo2 zu übernehmen
heißen soll:

Vorschlag des cbo1 in cbo2 bei Neueingaben
Vorschlag des cbo1 in cbo2 bei Änderungen
Zwangsweiser Eintrag des cbo1-Werts in cbo2 für die Detailsätze.
sonstiges


Irgendwie ist das ein ungünstiges Beispiel. :)

RookieOne
29.04.2011, 13:10
Hallo, Martin,

ich muss zugeben, das Beispiel ist etwas ungünstig.

Du hast das aber richtig erfasst:

... Vorschlag des cbo1 in cbo2 bei Neueingaben ...

So sollte es sein. Ich hatte erst an die globale Variable gedacht, wovon du mir ja abrietest.

Käme hier der Lösungsweg für sog. abhängige Kombifelder in Betracht?

Gruß, Daniel

Atrus2711
29.04.2011, 13:29
'Im HF:
Private Sub cbo1_AfterUpdate()
If Not IsNull(Me!cbo1) Then
Me!UF_HSt!cbo2.DefaultValue = "'" & Me!cbo1 & "'"
Else
Me!UF_HSt!cbo2.DefaultValue = ""
End If
End Sub


Private Sub Form_Current()
If Not IsNull(Me!cbo1) Then
Me!UF_HSt!cbo2.DefaultValue = "'" & Me!cbo1 & "'"
Else
Me!UF_HSt!cbo2.DefaultValue = ""
End If
End Sub

Die seltsamen Zahlen im Ufo-Komnbi waren die Differenz der "beiden Zahlen". Die 0608-42971 wurden "durchgerechent". Jetzt, mit den Hochkommas drumrum, gehts.