Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Formular nicht schließbar!

Begonnen von ChemSim, Februar 20, 2024, 18:36:22

⏪ vorheriges - nächstes ⏩

ChemSim

Hallo zusammen,

in meiner Access-Datenbank benutze ich ein ungebundenes Formular frmDashboard, welches ich so eingestellt habe, dass es sich beim Start der Datenbank automatisch öffnet. Da dieses Formular dazu genutzt werden soll, auf die anderen gebundenen Formulare zu verweisen (mit Schaltflächen), möchte ich gerne das Formular als nicht schließbar einstellen, d. h. der Nutzer kann es nicht mehr schließen und es soll immer offen bleiben.

Gibt es dazu eine Möglichkeit?

Gruß
Simon

dolpho

Hallo Simon,

wenn du als Format des Formulares die "Schließen Schaltfläche" auf "nein" stellst, und die "Rahmenart" auf "keine" wird es schon mal schwer.
Dann kannst Du es nur noch schließen, wenn du den ganz dünnen Rahmen mit recht anklickst und schließen wählst.
Ist deine Datenbank voll funktionsfähig, kannst du sie auch auf Runtime-Ausführung umstellen. Durch das Umbenennen der Dateinamenerweiterung von accdb auf accdr fällt dann auch diese Möglichkeit weg.

Gruß dolpho

MzKlMu

Hallo,
mit etwas VBA Code lässt sich das verhindern. Im Modul für das frmDashboard
Option Compare Database
Option Explicit
Public bolSchliessenErlaubt As Boolean
----------------------------------------------------------------------

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 88 Then 'x
        bolSchliessenErlaubt = True
    End If
End Sub

Private Sub Form_Open(Cancel As Integer)
    bolSchliessenErlaubt = False
End Sub

Private Sub Form_Unload(Cancel As Integer)
    If bolSchliessenErlaubt = False Then
       Cancel = True
    End If
End Sub

Die Tastenvorschau des Formulars muss auf ja stehen. In den Ereigniseigenschaften ganz unten in der letzten Zeile zu finden.
In obigem Code wird das kleine x genutzt um das Schließen zu erlauben.
Mit obigem Code ist es unmöglich das Formular zu schließen. Es ist noch nicht mal möglich die DB zu beenden.
Wenn es beim Probieren nicht richtig funktioniert, muss die DB über den Taskmanager geschlossen werden.
Diese Prozeduren lassen sich in abgewandelter Form auch nutzen Eingaben zu prüfen. Man kann hier z.B. dafür sorgen, dass es nicht möglich ist die DB zu beenden wenn nicht alle Pflichtfelder ausgefüllt sind.
Gruß Klaus

ChemSim

Hallo dolpho,

vielen Dank für deine Antwort.

ZitatFormat des Formulares die "Schließen Schaltfläche" auf "nein" stellst, und die "Rahmenart" auf "keine" wird es schon mal schwer.

Danke, es hat funktioniert. Jetzt ist zumindest schonmal das "x" weg, um das Formular per "schnellem Klick" zu schließen.

ZitatDann kannst Du es nur noch schließen, wenn du den ganz dünnen Rahmen mit recht anklickst und schließen wählst.

Das Formular kann aber weiterhin geschlossen werden, wenn ich oben auf das Symbol in der Menüleiste rechtsklicke:

Sie dürfen in diesem Board keine Dateianhänge sehen.

bzw. auch, wenn ich irgendwo im Formular selbst per Rechtsklick klicke.

Gruß
Simon

ChemSim

Hallo Klaus,

danke auch für Deine Antwort.

ZitatMit obigem Code ist es unmöglich das Formular zu schließen. Es ist noch nicht mal möglich die DB zu beenden.

Okay, das möchte ich schon noch. Also der User soll die gesamte DB schon noch schließen können über die Schaltfläche mit dem roten X oben rechts. ;D

Gruß
Simon

MzKlMu

#5
Hallo,
Zitat... schließen können über die Schaltfläche mit dem roten X oben rechts
Nein, das solltest Du nicht zulassen.
Du hast doch das Formular frmDashboard und auf dieses Formular sollte ein Button zum Schließen der DB.
Code dazu: DoCmd.QuitNur über diesen Button kann die DB geschlossen werden.

Wie machst Du das mit der Mehrbenutzerumgebung ?
Da gibt es einiges zu beachten.
Gruß Klaus

ChemSim

Hallo,

Zitatmit etwas VBA Code lässt sich das verhindern.

Ich habe im VBA Editor ein neues Modul erstellt und dabei den folgenden Code eingefügt.

Option Compare Database
Option Explicit
Public bolSchliessenErlaubt As Boolean

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 88 Then 'x
        bolSchliessenErlaubt = True
    End If
End Sub

Private Sub Form_Open(Cancel As Integer)
    bolSchliessenErlaubt = False
End Sub

Zudem habe ich im Eigenschaftendatenblatt bei Ereignis die "Tastenvorschau" auf "Ja" gestellt, aber ich kann das Formular trotzdem noch ganz normal schließen. Woran liegt der Fehler?

ZitatDu hast doch das Formular frmDashboard und auf dieses Formular sollte ein Button zum Schließen der DB.

Okay, das würde ich danach umsetzen!

ZitatWie machst Du das mit der Mehrbenutzerumgebung ?
Da gibt es einiges zu beachten.

Zunächst soll die Datenbank nur für mich persönlich sein, eine Mehrbenutzernutzung steht noch in ganz weiter ferne, wenn überhaupt man realisiert.

Gruß
Simon

MzKlMu

Hallo,
nein, kein extra Modul erstellen. Der Code muss in das Modul des Formulars.
Einfach im Formular eine der Ereignissprozeduren verwenden und Code wie gezeigt ergänzen.
Gruß Klaus

ChemSim

Hallo,

auch das funktioniert leider bei mir nicht.

Der Code ist jetzt hier (frmDashboard):

Sie dürfen in diesem Board keine Dateianhänge sehen.

und es wurden auch Ereignisse erstellt:

Sie dürfen in diesem Board keine Dateianhänge sehen.

Gruß
Simon

MzKlMu

Hallo,
im Anhang ein Beispiel.

Für den Entwickler gibt es eine Hintertür. Wenn man im Formular das kleine x eingibt, wird das Formular normal geschlossen und die DB wird nicht beendet.
Gruß Klaus

ebs17

bolSchliessenErlaubt = True
DoCmd.Close acForm, Me.Name
Statt in der Tastenvorschau kann man das auch in einer Ereignisprozedur eines Schließen-Buttons oder bei einem anderen gewünschten Event ablegen. Irgendein erlaubter und für den User nachvollziehbarer Ausgang sollte ja auch bestehen.
Mit freundlichem Glück Auf!

Eberhard

MzKlMu

Hallo,
ZitatIrgendein erlaubter und für den User nachvollziehbarer Ausgang sollte ja auch bestehen.
Den gibt es in meinem Beispiel über den Button "DB beenden".
Gruß Klaus

ebs17

Das entspricht dem Sinn der Eingangsfrage.
Manchmal wird man aber trennen zwischen Formular-Schließen und DB beenden.
Mit freundlichem Glück Auf!

Eberhard

ChemSim

Hallo Klaus

Zitatim Anhang ein Beispiel.

Vielen Dank, es hat funktioniert und ich habe es in meiner Datenbank eingebaut!

Gruß
Simon