Listenauswahl an Kombinationsfeld übergeben?

Hallo.
Ich möchte gerne eine in einer Liste getroffene Auswahl via ok-button an ein kombinationsfeld übergeben, wodurch automatisch weitere werte automatisch in den nebenstehenden spalten ergänzt werden. Ist es möglich das so zu machen?

Code:

If Form_frm_ChooseSourceName.strChooseSourceFrom = „frm_Machine“
’ Bestimmung von wo aus ChooseSource geöffnet wurde
Then
Set l_rs = l_db.OpenRecordset(lv_sql)

Form_frm_Machine.cboSourceID = l_rs.Fields(„SourceName“).Value
’ SourceID = Bezeichnung des Kombinationsfeldes

Form_frm_Machine.SourceID = lstSourceTab.Value
'lstSourceTab ist der ausgewählte Wert im Listenfeld
der Quellenauswahl (chooseSource)

Form_frm_Machine.Visible = True
Me.Visible = False
Else
End If

End Sub

Hallo,

Ich möchte gerne eine in einer Liste getroffene Auswahl via
ok-button an ein kombinationsfeld übergeben, wodurch
automatisch weitere werte automatisch in den nebenstehenden
spalten ergänzt werden. Ist es möglich das so zu machen?

mhmm, kann nicht folgen und den Sinn erkennen…

Code:

If Form_frm_ChooseSourceName.strChooseSourceFrom =
„frm_Machine“
’ Bestimmung von wo aus ChooseSource geöffnet wurde
Then
Set l_rs = l_db.OpenRecordset(lv_sql)

Form_frm_Machine.cboSourceID = l_rs.Fields(„SourceName“).Value
’ SourceID = Bezeichnung des Kombinationsfeldes

Form_frm_Machine.SourceID = lstSourceTab.Value
'lstSourceTab ist der ausgewählte Wert im Listenfeld
der Quellenauswahl (chooseSource)

Form_frm_Machine.Visible = True
Me.Visible = False
Else
End If

End Sub

Dieser Code wirft mehr Fragen auf als er klarstellt…

Beschreib mal ohne Code nur die Namen der beteiligten Formulare und Steuerelemente und wo sie sich befinden, wie auch die Datensatzherkünfte des Listen- und Kombifeldes.

Weiterhin: warum soll ein aus einem Listenfeld ausgewählter Wert in ein Kombifeld kopiert werden?

Vermutlich ist der ganze Ansatz eher von hinten aufgezäumt.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo.
Mittlerweile bin ich ein Stück weiter. Zur Struktur:
Ich habe ein Formular in dem sich ein Kombinationsfeld befindet, welches Kunden aus der Tabelle_Kunden abruft. Diese Liste ist deutlich umfangreicher als die maximalen 65536 Einträge, sprich mein Dropdown zeigt maximal die Kunden bis Buchstabe H an. Deshalb öffnet sich jetzt beim Klicken auf das drop down ein Formular in dem ich die Suche einschränke. Den gewählten Ausdruck möchte ich über den Ok-Button in das Kombinationsfeld eintragen lassen oder es würde schon reichen wenn es da markiert werden würde, da bei auswahl aus dem kombifeld 3-4 weitere zelleneinträge automatisch ergänzt werden, ansonsten wäre es ja auch ohne kombifeld möglich. Gibt es eine simple funtion die auswahl aus dem suchdialog mit drücken des ok-buttons im kombinationsfeld zu markieren?

Hallo,

Mittlerweile bin ich ein Stück weiter. Zur Struktur:
Ich habe ein Formular in dem sich ein Kombinationsfeld
befindet, welches Kunden aus der Tabelle_Kunden abruft. Diese
Liste ist deutlich umfangreicher als die maximalen 65536
Einträge, sprich mein Dropdown zeigt maximal die Kunden bis
Buchstabe H an. Deshalb öffnet sich jetzt beim Klicken auf das
drop down ein Formular in dem ich die Suche einschränke.

nimm doch lediglich ein zweites Kombifeld, das alle Buchstaben von A-Z anzeigt und filtere danach das Kundenauswahlkombi…

Das nennt man abhängige Kombifelder und benötigt kein weiteres Form oder dergleichen.

oder nimm ein ungebundenes Textfeld, in das ein Teil des Kundennamens eingetragen wird und das Kundenkombi danach gefiltert wird.

Den
gewählten Ausdruck möchte ich über den Ok-Button in das
Kombinationsfeld eintragen lassen oder es würde schon reichen
wenn es da markiert werden würde, da bei auswahl aus dem
kombifeld 3-4 weitere zelleneinträge automatisch ergänzt
werden, ansonsten wäre es ja auch ohne kombifeld möglich. Gibt
es eine simple funtion die auswahl aus dem suchdialog mit
drücken des ok-buttons im kombinationsfeld zu markieren?

Markieren nützt nichts, wenn der entspr. Eintrag im Kombi nicht vorhanden ist…

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Ja aber der Eintrag ist ja zu 100% im Datensatz enthalten, wird halt nur nicht angezeigt. Das Formular mit dem Ok-Button, also der Suchdialog existiert ja bereits und ist mit einem anderen Formular verknüpft. Jedoch wird logischerweise bei der Auswahl und dem Drücken auf Ok die Auswahl in diesem Formular angezeigt. Ich möchte praktisch eine Fallunterscheidung bewirken, bei der Ok-Button prüft aus welchem Formular aus der Suchdialog geöffnet wurde, und er dementsprechend den Wert in das Textfeld des einen Formulars oder in das gewünschte Kombifeld einträgt.

So nach dem Motto:

Wenn Suchdialog geöffnet von Formular Maschine, gibt ausgewählten Suchdialogwert in Kombibox in Formular Maschine aus.

Wenn Suchdialog geöffnet von Formular Quelle, gibt ausgewählten Suchdialogwert in Textfeld xyz in Formular Quelle aus.

naja, wenn Du darauf beharrst…

Ja aber der Eintrag ist ja zu 100% im Datensatz enthalten,
wird halt nur nicht angezeigt. Das Formular mit dem Ok-Button,
also der Suchdialog existiert ja bereits und ist mit einem
anderen Formular verknüpft. Jedoch wird logischerweise bei der
Auswahl und dem Drücken auf Ok die Auswahl in diesem Formular
angezeigt. Ich möchte praktisch eine Fallunterscheidung
bewirken, bei der Ok-Button prüft aus welchem Formular aus der
Suchdialog geöffnet wurde, und er dementsprechend den Wert in
das Textfeld des einen Formulars oder in das gewünschte
Kombifeld einträgt.

Benutz das Openarg-Argument der Openform-Methode, um den Namen des aufrufenden Formulars an das Suchform zu übergeben (Zusätzlich könnte auch gleich der Steuelementname mit übergeben werden)

Aufruf des Suchforms:

Docmd.Openform „Suchform“,Me.Name & „;cboSourceID“
bzw.:
Docmd.Openform „Suchform“,Me.Name & „;XYZ“

Hinter dem OK-Button im Suchform steht:

Sub OK_Click()
Dim a

If not isnull (Me.Openargs) then
a=Split(Me.Openargs, „;“)
If Ubound (a) =1 then
Forms(a(0)).Controls(a(1))=Me!lstSourceTab.column(0)
End If
End If
’ docmd.close acForm, Me.Name
End Sub

So nach dem Motto:

Wenn Suchdialog geöffnet von Formular Maschine, gibt
ausgewählten Suchdialogwert in Kombibox in Formular Maschine
aus.

Wenn Suchdialog geöffnet von Formular Quelle, gibt
ausgewählten Suchdialogwert in Textfeld xyz in Formular Quelle
aus.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

das klingt sehr gut, vllt funktioniert das am besten.
kannst du mir da genauer sagen wo ich was eingeben soll?

mhmm,

wie meinst Du das?

Den Code für den Aufruf des Suchform mußt Du in derjenigen Ereignisprozedur eintragen, in der das Form eben geöffnet werden soll.

Der Code für den OK-Button ist die Ereignisprozedur für das Ereignis „Beim Klicken“ des OK-Buttons.

Evtl. müssen die Namen der Formulare, bzw. Steuerelemente noch richtig gestellt werden.

okay, fangen wir oben an :smile:
habe jetzt in dem formular machine einen button erstellt, der das suchformular öffnen soll mit folgendem code beim klicken

Private Sub Befehl21_Click()
DoCmd.OpenForm „frm_ChooseSourceName“ Me.Name&";txtSourceID", Windowmode:=acDialog
End Sub

frm_ChooseSourceName ist das Formular und txtSourceID das textfeld indem dann der Wert aus dem Suchformular später angezeigt werden soll…passt das soweit? sicherlich nicht oder? zeigt mir nämlich nen fehler an ^^

Warum schreibst Du nicht meinen Codevorschlag ab??

Private Sub Befehl21_Click()
DoCmd.OpenForm „frm_ChooseSourceName“,acDialog, Me.Name & „;txtSourceID“
End Sub

war mir nicht sicher ob das so richtig ist wie ich es gemacht habe, hat aber super geklappt, musste nur noch eine globale variable integrieren, die in den anderen formularen bereits verwendung fand :smile:
ging dann ohne openarg sondern doch per einfacher if-clause beim ok-button :smile: ganz großen Dank für die Ideen und Ratschläge :wink: