Hallo Zusammen
Ich habe eine DB erstellt und dabei das Access Hauptfenster ausgeblendet gem. Info von Microsoft:
http://support.microsoft.com/default.aspx?scid=kb;de;D45191
Dies funktioniert alles wunderbar. Ich starte die DB und mein Hauptmenü kommt. Dort öffne ich per Button ein neues Formular (als Pop-up) funktioniert soweit auch. Das Formular des Hauptmenüs ist dann im Hintergrund immer noch offen. Wenn ich nun mein aktives Formular schliessen möchte, werden beide Formulare beendet. Wie kann ich nur ein Formular beenden?
DoCmd.Close acForm, Me.Name
DoCmd.Close acForm, Screen.ActiveForm.Name
Das hat beides nicht funktioniert...???
Ich nehme nicht an, dass ich das aktive Formular beenden muss und im gleichen Schritt ein Befehl um das Hauptmenü zu öffnen abzusetzen (ich sehe ja, dass das Hauptmenü noch offen ist)...
Hallo,
versuch mal ...
DoCmd.Close acForm, "NameDeinesFormulars"
HTH
Hallo HTH
Funktioniert leider auch nicht. Beide Formulare werden geschlossen...
(MSACCESS Prozess noch aktiv...)
Hallo,
"Wenn ich nun mein aktives Formular schliessen möchte, werden beide Formulare beendet. "
Wie und wo willst Du das Popup schliessen?
Naja,
in dem Artikel von MS ist aber auch zu lesen...:
Ebenso entspricht das Fenster-Handling nicht dem Windows-Standard.
Ich würde mal meinen, dass du da ebenfall mit API-Befehlen das FensterHandling ansprechen wirst müssen.
Ich verstehe eigentlich nicht warum du das Access-Hauptfenster überhaupt unterdrücken willst.
Zitat
"Wenn ich nun mein aktives Formular schliessen möchte, werden beide Formulare beendet. "
Also ich ein Formular = Hauptmenü und von dort aus kann ich weitere Formulare für Eingaben etc. starten per Button.
Wenn ich nun ein weitere Formular geöffnet habe bleibt das Hauptmenü im Hintergrund offen. Wenn ich nun zurückkehren möchte zum Hauptmenü Formular, schliesse ich das Erfassungsformular mittels Button.
Eben dann werden aber beide Formulare geschlossen (übrigens auch wenn ich auf "x" drücke und nicht den Button nehme).
ZitatIch verstehe eigentlich nicht warum du das Access-Hauptfenster überhaupt unterdrücken willst.
Nun ja es sieht eben schon einiges besser aus, wenn das ganze wie eine Applikation nur mit dem Hauptformular startet ohne
das Access Hauptfenster noch im Hintergrund. Das Hauptfenster wird ja eigentilch nicht benötigt und wenn ich nur kleine Formulare habe und hinten das grosse Hauptfenster ist das nicht unbedingt schön...
Hallo,
"Also ich ein Formular = Hauptmenü und von dort aus kann ich weitere Formulare für Eingaben etc. starten per Button."
Ist dieses Hauptform ein Popup und blendest Du das Access-Fenster beim Öfnen eines neuen Popup-Forms erst aus?
"Wenn ich nun ein weitere Formular geöffnet habe bleibt das Hauptmenü im Hintergrund offen."
Die Frage ist, ob es zu sehen ist oder nicht. Sihe Access-Fenster ausblenden.
"Wenn ich nun zurückkehren möchte zum Hauptmenü Formular, schliesse ich das Erfassungsformular mittels Button."
Welcher Code steht dahinter?
Wenn das Access-Fenster und dadurch ggfls. das Hauptformular ausgeblendet ist, sieht Du nach dem Schliessen der Popup-Fensters nichts mehr....(siehe Link)
Hallo
Nein, ich blende das Hauptformular nicht aus (kein Befehl dazu hinterlegt).
Es sind also beide Fenster sichtbar, aber solange das zweite Formular offen ist, kann ich nichts im Hauptformular machen.
(das stört mich auch nicht...)
Zitat
"Wenn ich nun zurückkehren möchte zum Hauptmenü Formular, schliesse ich das Erfassungsformular mittels Button."
Das sind eben diese drei Anweisungen, die nicht funktioniert haben:
DoCmd.Close acForm, "NameDeinesFormulars"
DoCmd.Close acForm, Me.Name
DoCmd.Close acForm, Screen.ActiveForm.Name
Interessant ist, wenn ich im zweiten Formular mittels rechter Maustaste versuche den Entwurfsmodus zu aktivieren, werden auch beide Fenster geschlossen....
(wolltest du noch einen Link angeben DF6GL??)
Hallo,
also ich organisiere so etwas wie folgt:
- Alle Formulare (außer einige spezielle auswahlformulare) immer in Maximum öffnen
- Hauptmenü wird gestartet, hieraus können andere Formulare gestattet werden mit:
Public Function DeinFormular()
Call Schliessen
DoCmd.OpenForm FormName:="DeinFormular"
...
...
End Function
und :
Public Function Schliessen()
'alle geöffneten Formulare , ausser Hauptmenü, schliessen
Dim I As Integer
Dim g As Integer
g = Forms.Count - 1
For I = g To 0 Step -1
If Forms(I).Name <> "Hauptmenue" Then
DoCmd.Close acForm, Forms(I).Name
End If
Next
End Function
So habe ich immer das Hauptmenü im Hintergrund offen u. immer nur ein Formular aktuell im Vordergrund.
Gruß Oma
Hallo Petermeier
Mal so in's blaue geschossen, zeig unds doch mal bitte den Namen deines "Formular" das du schließen möchtest, sowie Franz es schon angeregt hat den Entsprechenden Code dazu. Ich persönlich kann es mir nicht Vorstellen das du das so Umgesetzt hast wie @Database und @df6gl es schon gepostet haben.
Gruß Stefan
Hallo Zusammen
Also anbei einmal die Fakten zu meinen Formularen.
Überigens schon mal besten Dank für die Unterstützung....
Hauptformular das beim Start geöffnet wird:
Name: Overview
Inhalt: 3 Buttons (2 für das Öffnen eines jeweils anderen Formulars (Query & Contracts) und 1 für das Beenden von Access)
Ereignisprozedur:
Option Compare Database
Option Explicit
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
Private Sub Form_Open(Cancel As Integer)
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)
End Sub
Private Sub Capturing_Click()
DoCmd.Close
DoCmd.OpenForm "Contracts", WindowMode:=acDialog
End Sub
Private Sub Query_Click()
DoCmd.Close
DoCmd.OpenForm "Query", WindowMode:=acDialog
End Sub
Private Sub Exit_new_Click()
Application.Quit acQuitSaveNone
End Sub
zweites Formular das via Hauptformular geöffnet wird:
Name: Contracts
Inhalt: Diverse Felder und 1 Button um diese Formular zu schliessen (zusätzlich Code um ein Kombinatiosfeld zu erweitern)
Ereignisprozedur:
Option Compare Database
Private Sub Befehl42_Click()
DoCmd.Close acForm, "Contracts"
End Sub
Private Sub combCountry_NotInList(NewData As String, Response As Integer)
If MsgBox("Den eingegebenen Namen gibt es nicht." & vbCrLf & _
"Möchten Sie ihn anlegen?", vbYesNo, "Hinweis!") = vbYes Then
Response = acDataErrAdded
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Country", dbOpenDynaset)
rs.AddNew
rs!Country = NewData
rs.Update
rs.Close: Set rs = Nothing
Set db = Nothing
Else
Response = acDataErrContinue
End If
End Sub
Hallo Petermeier
ZitatPrivate Sub Capturing_Click()DoCmd.Close DoCmd.OpenForm "Contracts", WindowMode:=acDialogEnd Sub
Du öffens über dein Hauptformular dein neues Formular "Contracts" und schließt da bei dein Hauptformular mit dem Befehl "DoCmd.Close " , wenn du nun von dem Formular "Contracts" zum Haupformular zurück kehrst schließt du auch dieses mit dem Befehl
ZitatDoCmd.Close acForm, "Contracts"
Nun gibt es zwei Möglichkeiten du schließt dein Hauptforumlar nicht > öffnest dein zweites Formular, dann muss der Befehl "DoCmd.Close " raus.
Oder du blendest es aus mit dem Visible (F1) Acces hilfe.
Gruß Stefan
Hallo Stefan
Genau das war das Problem...
Habe das DoCmd.Close entfernt und nun funktioniert es einwandfrei
(kann schön das zweite Formular schliessen und zum Hauptformular zurückkehren).
Vielen herzlichen Dank (auch den anderen, die Hilfestellung geleistet haben)
Hallo,
warum das ganze mit API geregelt wird, erschliesst sich mir nicht... 8)
Gruß Oma