Hallo zusammen,
ich möchte einen Button auf einem Formular durch eine Makro steuern, so dass er einen anderen Formular im Dialogfenster öffnet, je nachdem was für ein Wert in einem Combo-Box ausgewählt ist.
Ich weiss nicht wie ich die Bedingung formulieren kann, und den Builder hilft mit nicht.
Ich habe z.B ein Feld "Mitarbeiter" auf dem Formular, das vorgegebene Werte in eine Combo-Box beinhaltet (Text), und ich möchte mit dem Button einen anderen Formular öffnen, je nachdem was für ein Wert im Feld "Mitarbeiter" steht. z.B wenn der Benutzer die name "Hans Mueller" im Combo-Box auswählt, und danach auf den Button drückt, sollte das Formular 1 eröffnet werden. Wenn aber das Feld "Mitarbeiter" den Wert "Sabine Meyer" zeigt als der Benuter auf dem knopf drückt, eröffnet sich das Formular 2 .
Ich habe schon versucht mit der Bedingung: [Forms]![Personal]![Mitarbeiter]="XXX" ; bzw auch mit der Bedingung [Forms]![Personal]![Mitarbeiter].[Visible]="XXX", aber es passiert nichts wenn ich das Makro ausführe.
Weisst jmd vielleicht wie das geht?
Hallo,
wozu brauchst Du für unterschiedliche Namen unterschiedliche Formulare?
Das ist ganz sicher der falsche Weg. Du benötigst nur ein Formular.
Zu Makros wirst Du kaum Hilfe bekommen, verwende VBA Code, das ist letztendlich einfacher.
Im Befehl zum Öffnen des Formulars kannst Du den Primärschlüssel das Mitarbeiters weiterreichen, sodass das Formular gefiltert geöffnet wird und nur den einen Namen anzeigt. Und einen Button brauchst Du dazu auch nicht.
Deine Mitarbeitertabelle hat hoffentlich einen Primärschlüssel.
Hi! ich würde eine Options Gruppe im form anlegen
1 form so
2 form so und
3 form so und so
Das Kombinationsfeld Mit 2 spalten in der erste die Mitarbeiter ID
Hinter den Butten
Dim ID As Long
If Nz(Me!CboFeld, "") <> "" Then
ID = Me!CboFeld.Column(1)
Select Case Me!rahmen
Case 1
DoCmd.OpenForm " form so ", , , , , , ID
Case 2
DoCmd.OpenForm " form so und ", , , , , , ID
Case 3
DoCmd.OpenForm " form so und so", , , , , , ID
End Select
Else
MsgBox " es ist kein Mitarbeiter ausgewählt"
End If
In zu öffnenden Formular um den passenden Datensatz mit den übergebenen Argument zu finden
Private Sub Form_Load()
Dim RS As DAO.Recordset
If Not IsNull(Me.OpenArgs) Then
Set RS = Me.RecordsetClone
RS.FindFirst "[IDRef] = " & Me.OpenArgs
If Not RS.NoMatch Then
Me.Bookmark = RS.Bookmark
Else
DoCmd.GoToRecord , , acNewRec
End If
End If
If Not RS Is Nothing Then RS.Close: Set RS = Nothing
End Sub
Hallo,
wenn unterschiedliche Formulare entspr. der Auswahl aus einem Kombifeld geöffnet werden sollen, so braucht es nur diesen Code:
Sub cmbMitarbeiter_Afterupdate()
Select Case Me!Mitarbeiter ' ausgehend davon, dass die Mitarbeiternamen in der ersten (der gebundenen) Spalte des Kombilistenfeldes stehen
Case "Hans Mueller" : Docmd.Openform "frmFormular1"
Case "Sabine Meyer" : Docmd.Openform "frmFormular2"
.
.
.
Case Else: Docmd.Openform "frmUniversalFormular"
End Select
End Sub
Sinnvoll wäre, die Liste der Mitarbeiter in einer Tabelle zu führen und nicht als (vermutliche) Werteliste eines Kombis und dabei mit dem Primärschlüssel der Mitarbeiter-Tabelle zu arbeiten.