Neuigkeiten:

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

Mobiles Hauptmenü

frmMaster / funktion GetUserName v. PhilS

Begonnen von KlaSur, Juli 24, 2024, 16:19:48

⏪ vorheriges - nächstes ⏩

KlaSur

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

  •  

MzKlMu

#1
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"
Gruß
Klaus
  •  

KlaSur

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
  •  

PhilS

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.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor
  •  

MzKlMu

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

KlaSur

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
  •