Neuigkeiten:

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

Mobiles Hauptmenü

Nur ein Formular anzeigen lassen

Begonnen von Kladdi, Februar 18, 2013, 15:15:15

⏪ vorheriges - nächstes ⏩

Kladdi

Hallo zusammen,

Ich entwickle zur Zeit ein Interface für meine Access (2010) Datenbank, da ich den Usern dieser Datenbank leider durchaus zutraue in den Abfragen und ähnlichen rumzuwerkeln (ohne davon irgendeine Ahnung zu haben) will ich NUR das Interface, bestehend aus mehreren Formularen sichtbar lassen.

Nach Internetrecherche bin ich auf folgenden Code gestoßen:

Const SW_HIDE = 0
Const SW_SHOW = 1

Private Declare Function ShowWindow Lib "user32" _
(ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Function HideWindow()
    Dim hWindow As Long
    Dim nResult As Long
    Dim nCmdShow As Long
   
    hWindow = Application.hWndAccessApp
    nCmdShow = SW_HIDE
   
    nResult = ShowWindow(ByVal hWindow, ByVal nCmdShow)
   
    DoCmd.OpenForm "MainPage"
   
End Function


Wenn ich diesen durch ein AutoExec - Makro zum Programmstart ausführen lassen funktioniert das auch super, einziges Problem ist, dass auch das Formular (MainPage) welches ich aufrufe nicht gezeigt wird.
Nach weiterer Recherche bin ich darauf gestoßen das das Formular auf "Pop up" gestellt sein muss um angezeigt zu werden, das umgestellt aber es läuft immer noch nicht.

Kann mir jemand weiterhelfen?

Viele Grüße

Kladdi

database

#1
Hallo,

bei donkarl.com gibt es ein Codebeispiel, dass deinem sehr ähnlich ist - aber nicht ganz.

....
Zitat
Du möchtest, dass beim Starten einer Access-DB das Access-Hauptfenster nicht angezeigt wird. Der User soll also nur Formulare sehen.

Lösung

Das wirklich komplette Ausblenden geht mit API.
Im Deklarationsbereich des Formularmodules in deinem Übersichtsformular:

Const SW_HIDE = 0
'in A00 ist dazu noch nötig:
'Const SW_NORMAL = 1

Private Declare Function ShowWindow Lib "user32" _
   (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long


danach geht es mit der 'Öffnen-Sub' deines Startformulars weiter.
Also jenes Formular, dass du in den Access-Optionen als dein Starformular festgelegt hast.

Schau dir das doch mal genau an, in der Regel funktionieren die Codebeispiele von Karl Donaubauer anstandslos.
Und du benötigst dabei auch kein AutoExec-Makro  ;)

http://www.donkarl.com?FAQ1.11


HTH

Kladdi

Vielen Dank,

er verweist zwar auch auf die Seite von Microsoft (http://support.microsoft.com/kb/510049/de), allerdings habe ich bemerkt das ich die letzte Zeile von deren Code nicht mitgeschrieben hatte und da lag auch der ganze Fehler.

Falls es noch jemanden interessiert vollständig sieht das ganze dann so aus:

Deklarationsteil eines Übersichtformulars:
   
   Const SW_HIDE = 0       ' Fenster ausblenden
   Const SW_NORMAL = 1     ' Fenster wiederherstellen bzw. einblenden
   Private Declare Function ShowWindow Lib "user32" _
   (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
   


Und dann wird noch folgender Code wärend des Ereignisses "Laden" (oder "Öffnen") dieses Formulares ausgeführt:

   
   Dim hWindow As Long
   Dim nResult As Long
   Dim nCmdShow As Long
   hWindow = Application.hWndAccessApp
   nCmdShow = SW_HIDE
   nResult = ShowWindow(ByVal hWindow, ByVal nCmdShow)
   call ShowWindow(Me.hWnd, SW_NORMAL)
   


Des weiteren ist es wichtig das alle Formular bei "Pop Up" auf "Ja " eingestellt sind.