Office: (Office 2003) Globale Funktion

Helfe beim Thema Globale Funktion in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, einige Formulare sollen nur in Verbindung mit anderen Formularen zu öffnen sein. Damit ich nicht ständig den gleichen Test schreiben muss wollte... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Christoph Eick, 31. Oktober 2010.

  1. Globale Funktion


    Hallo,
    einige Formulare sollen nur in Verbindung mit anderen Formularen zu öffnen sein.
    Damit ich nicht ständig den gleichen Test schreiben muss wollte ich dies Gobal definieren.

    Code:
    Im FormOpen Ereignis sollte dann nur noch stehen:

    fktFormOpen
    stDocName = "Name des übergeordneten Formulars"
    stFormName = "Name des Formulars, welches geöffnet werden sollte"

    Leider funktioniert das so nicht wirklich, ich erhalte hier Fehlermeldungen, hier z.B. Variable nicht definiert (stDocName) bzw. werden die beiden Formularnamen (stDocName und stFormName) nicht mit angezeigt.

    Wo habe ich hier den Fehler gemacht?

    :)
     
    Christoph Eick, 31. Oktober 2010
    #1
  2. Der Gang der Dinge sollte so sein:
    Code:
    Die Variablen in den Klammern werden der Funktion übergeben, z.B. aus dem aufrufenden Formular.
    Aufruf im Formular beispielsweise:
    Code:
    oder auch nur
    Code:
    maike
     
  3. Wo übergibst du die Werte in die Prozedur?

    Code:
    Nutzung:
    Code:
    BTW: Wozu dient die Variable Response? DoCmd.Close kommt mir auch etwas eigenartig vor.


    mfg
    Josef
     
    Josef P., 2. November 2010
    #3
  4. Globale Funktion

    Zu #3
    so funktioniert es.

    Warum ich Response? DoCmd.Close d'rin hatte kann ich jetzt gar nicht mehr sagen.

    Mit Me.Name wird mir leider der Access Formularname angezeigt. Mit diesem kann der Benutzer aber nichts anfangen. Daher sollen hier die Benutzernamen, in diesem Fall "Personalübersicht" angezeigt werden.

    In der Zwischenzeit war ich schon ein klein bisschen weiter und habe den Code dahin erweitert, das der Benutzer die Wahl hat, das übergeordnete Formular gleich zu starten.

    Daher ist nun
    stDocName = "Name des übergeordneten Formulars" =>Accessname = z.B. frmPersVerz
    stFormName = "Name des Formulars, welches geöffnet werden sollte"
    stHauptFormName = "Name des übergeordneten Formulars" => Benutzername = z.B. Personalvereichnis

    Im FormOpen Ereignis des Formulars "Personalübersicht" sieht das so aus:
    Code:
    Das wollte ich nun gerne Global so definieren, das ich dies mit ein paar kurzen Zeilen, wie unter #3, für mehrere Formulare verwenden kann.
     
    Christoph Eick, 2. November 2010
    #4
  5. Es stellt sich mir die Frage, ob es nicht einfachere Wege gibt...

    Formularöffnungen werden doch irgendwie angestoßen:
    • per Makro
    • per VBA
    • per Menübefehl

    Diese Dinge lassen sich doch steuern: Ein Makro wird nicht ausgeführt, ein VBA-Befehl nicht aufgerufen, ein Menüeintrag ausgeblendet oder inaktiv, ein Button desgleichen. Dazu bedarf es dann auch keiner MsgBox, weil es eben nicht geht. *wink.gif*
     
  6. Warum? *confused.gif*
    Im Klassenmodul funktionierts doch. Warum soll es denn nicht auch Global funktionieren?
    Und warum soll nicht der Benutzer, wenn er Auf einen Umstand hingewiesen wird, in diesem Fall, das sich das gewünschte Formular nur über ein anderes öffnen lässt, nicht auch die Möglichkeit erhalten, gleich mit einem Klick ebend dieses Formular zu öffnen?

    Im Prinzip funktioniert doch der Vorschlag von Josef. Ich möchte ihn doch jetzt nur etwas erweitern und anpassen, Benutzerfreundlich gestallten.

    Gru?
    Christoph
     
    Christoph Eick, 2. November 2010
    #6
  7. \@Christoph
    Genau das würde ich im Hintergrund steuern ohne den User einzubeziehen.

    Aber das ist wohl Geschmackssache. *wink.gif*
     
  8. Globale Funktion

    \@Maxel
    ... aber wie?
    Vorschlag, ich sage ja nicht, das meine Lösung DIE ist.

    Ich möchte ja nur Vorsorge treffen, falls der Benutzer, was eigentlich nicht sein soll, ein Nebenformular öffnet, welches nur aus einem dazugehörigen Hauptformular geöffnet werden soll.

    Anfangs hatte ich die Möglichkeit mit drin, das dann das Hauptformular dann automatisch öffnet. Wegen des komplexen Cod's mit dem ich so nicht klargekommen bin, habe ich das wiederum verworfen.

    Gruß
    Chistoph
     
    Christoph Eick, 2. November 2010
    #8
  9. Das "Wie" könntest du aus Beitrag #3 ableiten. Probiere eine Variante aus und falls damit Fehler entstehen, zeigst du den Code her. (Ich bin zumindest der Meinung, dass es nichts bringt, wenn dir hier der Code vorgekaut wird. Weichkochen und Kleinschneiden mache ich gerne, aber kauen musst du selbst. *biggrin.gif*)

    Wie kann der Anwender das Nebenformular öffnen, wenn man es nur aus dem dazugehörigen Startformular öffnen kann?

    mfg
    Josef
     
    Josef P., 2. November 2010
    #9
  10. \@Josef
    Ich habe den Verdacht, dass das Datenbankfenster sichtbar ist...
     
  11. Hallo,
    so, ich glaub' ich habs geschaft! *Smilie
    Jedenfalls sieht mein Ergebnis so aus, wie ich es wollte und es scheit sogar zu funktionieren.
    Die Prozedur lautet:
    Code:
    Die Variablen sind unter Code:
    deklariert

    Die übergabe der Werte in die Prozedur erfolgt im Klassenmodul.
    Code:
    Das funktionierende Ergebnis habe ich Anhang noch mal angefügt.
    @ Maxel
    Das Datenbankfenster wird normalerweise nicht angezeigt. Aber wir haben auch Freaks, die sie über die Menü- Symbolleisten dann die Formulare holen.

    Gruß
    Christoph
     
    Christoph Eick, 3. November 2010
    #11
  12. Warum hast du die Variablen für die Funktionsparameter als Public deklariert?

    Es würde doch auch so etwas funktionieren:
    Code:
    Noch etwas:
    Code:
    Da du die Parameter den identischen Namen wie den globalen Variablen gegeben hast musst du beachten, wann welche Variable zum Einsatz kommt.

    Ich kann dir nur empfehlen, wo immer es geht auf globale Variablen zu verzichten. Du öffnest damit nur viele Fehlerquellen, die schwer zu finden sind.
    Sobald eine Anwendung etwas komplexer wird, kann es passieren, dass eine Variable ungewollt mit einem neuen Wert versorgt wird, obwohl der alte Wert noch benötigt worden wäre. Da die Änderung in einer globalen Variable aber nicht kontrolliert werden kann, arbeitet der Code - den den alten Wert benötigt hätte - mit dem neuen Wert weiter, als wäre alles ok.

    Außerdem finde ich Code mit vielen globalen Variablen schwer zu lesen, da man nur schwer herausfinden kann, wann welche Variable eingestellt wird. => Das erhöht die Gefahr, dass man bei Änderungen im Code etwas übersieht und Fehler produziert.

    mfg
    Josef
     
    Josef P., 3. November 2010
    #12
  13. Globale Funktion

    Hallo Josef,
    stimmt, so funktioniert das nun auch.
    Ich hatte es erst auch so, aber da funktionierte es nicht, hab mir da wohl 'nen Fehler eingebaut.

    Danke dann noch für den Hinweis.

    Eigentlich wollte ich einiges auf globale Variablen, bzw. Prozeduren umstellen, da ich in vielen Formularen immer den gleichen Codetest verwende. Wenn dann Änderungen eintreten muss ich immer wieder alle Formmulare durchschauen und den Code anpassen. Hier, so hatte ich gedacht muss ich dies dann nur an einer Stelle tun.

    Gruß
    Christoph
     
    Christoph Eick, 3. November 2010
    #13
  14. Aufgaben in Prozeduren auslagern ist durchaus sinnvoll - das kann ich nur empfehlen. Globale Variablen benötigt man aber eigentlich nur sehr selten.

    Sobald du in Prozeduren auf globale Variablen zugreifst, hast du aus Sicht der Prozedur nicht mehr die volle Kontrolle über den Variableninhalt.
    Normalerweise sollte man bei Prozeduren mit den Parametern und bei Bedarf mit dem Rückgabewert auskommen.
    Alles was die Prozedur benötigt, fordert sie durch die Parameter ein.
    Damit ist eine klare Schnittstelle gegeben und man muss bei der Verwendung einer Prozedur nicht wissen, was sonst noch alles zuvor eingestellt werden muss.

    mfg
    Josef
     
    Josef P., 3. November 2010
    #14
  15. ... wie ist denn das, wenn ich einen Wert aus einer Formular für ein anderes benötige.
    Bsp = xBenutzer aus dem LogIn Formular

    im Formular Geräte um hier bestimmte Daten ein zu geben bzw zu verändern, die der Normale Benutzer nicht ändern soll?

    Christoph
     
    Christoph Eick, 3. November 2010
    #15
Thema:

Globale Funktion

Die Seite wird geladen...
  1. Globale Funktion - Similar Threads - Globale Funktion

  2. Kontextmenü global deaktivieren

    in Microsoft Access Hilfe
    Kontextmenü global deaktivieren: Hallo, ich mal wieder Meine Vereins-DB ist für die Anwender soweit zum Test freigegeben. Ich möchte aber das Kontextmenü deaktivieren, sodaß niemand in die Entwurfansicht umschalten kann. In der...
  3. Prozeduren über eine globale Vorlage ausführen

    in Microsoft Word Hilfe
    Prozeduren über eine globale Vorlage ausführen: Hallo! Ich möchte gerne verschiedene Prozeduren in einer zentralen (globalen) Vorlage erstellen und auf diese Prozeduren bzw Funktionen mit jedem neuen Dokument insbesondere neuen Dokumenten, die...
  4. Globale Formel für Formatierung

    in Microsoft Excel Hilfe
    Globale Formel für Formatierung: Moin, Ich habe eine Excel-Tabelle in welcher in jeder Zeile 4 Grenzwerte beschrieben sind. Ich würde nun gerne eine Formel haben, die mir für jede Zeile die Werte je nach Grenzwert einfärbt....
  5. "Globale" Zahlenformatierung

    in Microsoft Excel Hilfe
    "Globale" Zahlenformatierung: Servus zusammen, ich weiß nicht, wie ich den Titel besser hätte nennen sollen. Und zwar bastel ich gerade an einer Tabelle für ein Spiel und mein erstes Problem (aufgrund von Verständlichkeit...
  6. Globale Regeln in Outlook

    in Microsoft Outlook Hilfe
    Globale Regeln in Outlook: Moin zusammen, wir nutzen seit kurzem Outlook in der Firma und haben neben unserem persönlichen Postfach noch ein Gruppenpostfach. Mich würde brennend interessieren, wie wir es hinbekommen...
  7. Globale Absatzanpassungen

    in Microsoft Word Hilfe
    Globale Absatzanpassungen: Guten Tag, ich nutze MS 365 und habe da folgendes Problem: Wenn ich in einer Word-Datei (nur eine bestimmte, eine DOTX) eine Absatz- oder Schriftart ändere (z. B. "Absatz vor" Änderung auf 0,6...
  8. Globales Ereignis im Formular

    in Microsoft Access Hilfe
    Globales Ereignis im Formular: Hallo, ich möchte bei einem Klick auf dem Formular ein Counter zurücksetzen. Nun habe ich auf dem Formular verschiedene Objekte (Register, Textboxn, Listboxn…) Gist es bei einem Formular ein...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden