Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Formular über globale Variable steuern

Begonnen von gromax, April 12, 2015, 19:41:14

⏪ vorheriges - nächstes ⏩

gromax

Liebe Access-Profis,
in meiner DB gibt es zwei Start-Formulare (frm_NAVIGATION1 & frm_NAVIGATION2), von diesen Formularen aus steuern die Anwender die weitere Benutzung der DB.
Die Auswahl der Formulare mache ich abhängig, ob der CurrentUser in einer Tabelle (tbl_VERWALTUNGEN) hinterlegt ist oder nicht.
Das sieht in meinem VBA-Code dann so aus:

(...)
MyForm = DLookup("VER_EDVKonto", "tbl_VERWALTUNGEN", "VER_EDVKonto = '" & CurrentUser & "'")
If IsNull(MyForm) Then
Set p_frmStart = New Form_frm_NAVIGATION2
Else
Set p_frmStart = New Form_frm_NAVIGATION1
End If
p_frmStart.Visible = True
(...)

Die Variable p_frmStart ist eine dateiöffentliche Variable, die ich an anderer Sterlle auch gerne einsetzen wollte.
So sind in diesen Start-Formularen unterschiedliche Aufrufe von weiteren Formularen hinterlegt, die nach deren Schließung wieder das ursprüngliche Start-Formular aufrufen sollen. Bislang habe ich dies über folgenden Code verwirklichen können; hier das Beispiel "frm_AUSFALL_Auswahl":

Private Sub cmd_frm_SchulbesuchAuswahlSchließen_Click()
DoCmd.Close acForm, "frm_AUSFALL_Auswahl"
DoCmd.OpenForm "frm_NAVIGATION", acNormal
End Sub

Wie kann ich jetzt die globale Variable in diesen Code "einbringen", denn statt "frm_NAVIGATION" kann ich ja nicht einfach "p_frmStart" eintragen?!

Für einen Hinweis, für Hilfestellung jeglicher Art vorab vielen Dank
gromax

MaggieMay

Hallo,

wenn du das Navigationsformular zwischenzeitlich schließt - denn warum sonst solltest du es wieder öffnen wollen - so nützt dir die Objekt-Variable p_frmStart gar nichts, der Formularname (als String-Variable) wäre da schon hilfreicher.

Sinnvoller wäre es evtl., das Navigationsformular gar nicht zu schließen.
Freundliche Grüße
MaggieMay

gromax

Hallo Access-Profis,

nicht sicher wissend, ob ich eine Lösung gefunden habe, möchte ich diese dennoch hier kundtun:

Statt dem bisherigen Aufruf

DoCmd.OpenForm "frm_NAVIGATION", acNormal


habe ich einfach die Zeile

Call Open_up_multi_user

eingefügt und es funktioniert.

Die Funktion 'Open_up_multi_user' wird mittels des AutoExec-Makros aufgerufen und liefert das gewünsche Navigations-Formular.
Der Code dieser Funktion lautet:

Function Open_up_multi_user()

Dim MyForm As Variant
Dim VER_EDVKonto As String

MyForm = DLookup("VER_EDVKonto", "tbl_VERWALTUNGEN", "VER_EDVKonto = '" & CurrentUser & "'")

If IsNull(MyForm) Then
Set p_frmStart = New Form_frm_NAVIGATION2

Else
Set p_frmStart = New Form_frm_NAVIGATION
End If

p_frmStart.Visible = True

Exit Function

err_end:
MsgBox Err.Description

End Function

Pate dazu stand Ken Bluttmann, Access Tipps und Techniken, O'Reilly; TecTipp #2

Wenn daran kein weiteres Problem hängt, lasse ich dieses so und bin froh, dass ich das berühmte "Korn" gefunden habe.
Sollte dieses aber Auswirkungen zeitigen, die ich jetzt noch nicht absehe, so bin ich für Rückmeldung dankbar!

Vorab vielen Dank
gromax

MaggieMay

Diesen Teil:
Zitat von: gromax am April 12, 2015, 19:41:14So sind in diesen Start-Formularen unterschiedliche Aufrufe von weiteren Formularen hinterlegt, die nach deren Schließung wieder das ursprüngliche Start-Formular aufrufen sollen.
hast du jetzt aber ausgelassen.

Wo(rin) genau siehst du jetzt die Änderung?
Freundliche Grüße
MaggieMay

gromax

Hallo MaggieMay,

danke für Deine Antwort; aber wohl zeitgleich habe ich auch einen Lösungsvorschlag gefunden (vgl. meine "Antwort" zu diesem Thema). Zum Verständnis, zur Transparenz habe ich noch eine Darstellung meiner Dialogfelder beigefügt! Man kann bei einer Datenbank die Funktionsweise nicht immer so verschriftlichen, wie das vielleicht notwendig ist.

Viele Grüße
gromax