Neuigkeiten:

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

Mobiles Hauptmenü

Formular schliessen (Modus ohne Access Hintergrund)

Begonnen von petermeier, Februar 21, 2012, 14:20:22

⏪ vorheriges - nächstes ⏩

petermeier

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)...

database

Hallo,

versuch mal ...

DoCmd.Close acForm, "NameDeinesFormulars"

HTH

petermeier

Hallo HTH

Funktioniert leider auch nicht. Beide Formulare werden geschlossen...
(MSACCESS Prozess noch aktiv...)

DF6GL

Hallo,

"Wenn ich nun mein aktives Formular schliessen möchte, werden beide Formulare beendet. "


Wie und wo willst Du das Popup schliessen?
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

database

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.

petermeier

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...

DF6GL

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)
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

petermeier

#7
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??)

oma

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


nichts ist fertig!

Stapi

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
Grüße aus dem schönen NRW
Stefan

petermeier

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

Stapi

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
Grüße aus dem schönen NRW
Stefan

petermeier

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)

oma

Hallo,

warum das ganze mit API geregelt wird, erschliesst sich mir nicht... 8)

Gruß Oma
nichts ist fertig!