Habe ein Problem!
Habe ein Formula erstellt "Master" und da
hinter Funktion "Beim öffnen" einen VBA-Code gelegt
Je nachdem welcher User das Formular öffnet wird er entsprechend weitergeleitet
Code:
On Error GoTo Err_Befehl1_Click
Dim Nam As String
Dim Nam1 As String
Dim StDocName As String
Dim stdocName1 As String
Dim stdocName2 As String
Dim stLinkCriteria As String
Nam = ""
Nam = GetUserName
'MsgBox (Nam)
If Nam = "aaa" Or Nam = "bbb" Or Nam = "ccc" Or Nam = "ddd" Or Nam = "eee" Or Nam = "fff" Or Nam = "ggg" Or Nam = "hhh" Or Nam = "iii" Or Nam = "jjj" Or Nam = "kkk" Then
StDocName = "Master2"
DoCmd.OpenForm StDocName, , , acDialog
End If
If Nam = "lll" Then
StDocName = "Master1"
DoCmd.OpenForm StDocName, , , acDialog
End If
If Nam = "MMM" Or Nam = "OOO" Then
StDocName = "Master3"
DoCmd.OpenForm StDocName, , , acDialog
End If
If Nam = "PPP" Or Nam = "QQQ" Or Nam = "RRR" Then
stdocName2 = "Master4"
DoCmd.OpenForm stdocName2, , , acDialog
End If
If Nam = "" Then
AccessBeenden
End If
Exit_Befehl1_Click:
Exit Sub
Err_Befehl1_Click:
MsgBox Err.Description
Resume Exit_Befehl1_Click
End Sub
Code Ende:
Das Problem ist jetzt, daß egal welcher User es aufruft immer das Master2 Fomular aufgeht.
Den VariablenWert Nam habe ich schon geprüft!
mfg KlaSur
Hallo,
das ist maximal umständlich. Wenn es mal einen anderen Usernamen gibt muss der ganze Code angepasst werden.
Lege eine Tabelle an mit 2 Spalten "Username" und "Formular".
Wenn es bereits eine Tabelle für die User gibt muss diese Tabelle um eine Spalte für den Formularnamen (ggf.auch Username) erweitert werden.
Mit DLookUp liest Du aus dieser Tabelle den passenden Formularnamen aus.
Wie unterscheiden sich eigentlich die Masterformulare ?
Dein VBA Code schrumpft dann auf eine Zeile.
Und muss auch nie geändert werden, weil ein neuer Name einfach ein neuer Eintrag in der Tabelle dazu kommt.
Anmerkung:
Der von Dir oben gezeigte Code unterscheidet nicht zwischen Groß- und Kleinschreibung.
"MMM" = "mmm"
Guten Morgen Klaus,
danke für deinen Beitrag aber die Frage war "Warum klappt auf einmal der Programmtext nicht mehr?".
Ich werde das Formular nochmals aufbauen und deine Ratschläge beachten.
Also danke nochmals Klaus
Gruß KlaSur
Zitat von: KlaSur am Juli 25, 2024, 08:54:24die Frage war "Warum klappt auf einmal der Programmtext nicht mehr?".
Das ist eine berechtigte Frage. Eigentlich sollte dein Code funktionieren wie er ist.
Ich würde da mal Step-by-Step mit dem Debugger durchgehen.
Mein Verdacht ist, dass das Problem nicht in dem oben gezeigten Code liegt, sondern an einer anderen Stelle.
Unabhängig davon, sind die Hinweise von
@MzKlMu absolut berechtigt und es wäre eine gute Gelegenheit diese umzusetzen.
Hallo,
mal abgesehen von dem ungünstigen/umständlichen VBA Code würde man da kein IF Trommelfeuer verwenden, sondern das deutlich übersichtlichere "Select Case"
Das würde dann so aussehen:
Select Case Nam
Case "aaa", "bbb", "ccc" 'usw
StDocName = "Master2"
Case "lll"
StDocName = "Master1"
'usw
End Select
DoCmd.OpenForm StDocName, , , acDialog
Und wenn Du das über eine Tabelle machst dann reduziert sich der komplette Code auf:
Private Sub Form_Open(Cancel As Integer)
DoCmd.OpenForm DLookup("FormularName", "User", "User = '" & GetUserName & "'"), , , , , acDialog
End Sub
Hast Du nicht ohnehin schon eine Tabelle für die User?
Die Tabelle ist auch deutlich flexibler. Wenn Du bei Deiner Version einen neuen User hast, so muss immer der VBA Code geändert werde. Mit einer Tabelle ist das einfach nur ein neuer Eintrag.
Danke für eure Meinungen bzw. Verbesserungsvorschläge, Klaus und Phil. Wie bereits geschrieben werde ich den Programmtext mal unter die Lupe nehmen und zu meiner Entschuldigung würde ich sagen "ich war jung und brauchte das Geld".
Gruß KlaSur