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
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 (http://www.donkarl.com?FAQ1.11)
HTH
Vielen Dank,
er verweist zwar auch auf die Seite von Microsoft (http://support.microsoft.com/kb/510049/de (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.