Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Makro: Wertbezogener Button in Formular

Begonnen von Kromba, Mai 29, 2012, 18:41:16

⏪ vorheriges - nächstes ⏩

Kromba

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?

MzKlMu

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.
Gruß Klaus

Frank77

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

Selbstständig = Selbst und Ständig

DF6GL

#3
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.