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 zerschossen - unsauberes Beenden

Begonnen von herb54, Oktober 31, 2018, 11:38:07

⏪ vorheriges - nächstes ⏩

herb54

Hallo,
ich benutze ein Formular mit Unterdatenblatt in einer Datenbank. Der Zugriff zu diesem Formular erfolgt über einen Button (Kennwortabfrage über InpuBox). Ich vermute durch unsauberes Beenden (Kreuz rechts oben) hat es das Formular zerschossen:
- es war nicht mehr möglich im Unterdatenblatt Daten einzutragen (Datenfelder wurden nicht mehr angezeigt)
(sh. Anhang Unterdatenblatt)
- man konnte das Formular nicht mehr öffnen über den Button. Meldung: OpenForm abgebrochen...
Ein Versuch über Datenbank komprimieren und reparieren blieb erfolglos.
Habe den Fehler der gesperrten Datenfelder dann unter den Eigenschaften des Formulares entdeckt
(sh. Anlage Formular_fehlerhaft).
Das Problem mit dem OpenForm Abbruch habe ich (sh. donkarl 1.27) sehr einfach durch Auskommentieren der VBA-Zeilen - Formular öffnen über den Button und schließlich durch Entfernen der Kommentare gelöst.
Meine Frage:
Wie kann man das "unsaubere" Beenden verhindern? Das Kreuz rechts oben verleitet halt zum schnellen Schließen. Gibt es da Möglichkeiten dies zu verhindern?
Gruß
Herbert

DF6GL

Hallo,

ich glaube nicht, dass das Formular durch das Schließen "zerschossen" wurde.

Es ist eher zu vermuten, dass irgendwo Code ausgeführt wird, der die gekennzeichneten Eigenschaften setzt und bei Schließen dieser Zustand gespeichert wird. Normalerweise wird in solchen Situationen von Access nachgefragt, ob (das Formular) gespeichert werden soll oder nicht.

Oder das Speichern  der Form-Änderungen mit

Docmd.Close acform, Me.Name, acSaveyes

definitiv erlaubt ist.

Beaker s.a.

Hallo Herbert,
ZitatWie kann man das "unsaubere" Beenden verhindern?
In der Ereignisprozedur "Form_BeforeUpdate" oder "Form_Close"
ZitatDas Kreuz rechts oben verleitet halt zum schnellen Schließen. Gibt es da Möglichkeiten dies zu verhindern?
Ja, ausblenden mit "Schließen Schaltfläche = Nein" (Eigenschaften des Formulars)
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

herb54

Hallo vielen Dank für eure Hilfe!
Könnte das so aussehen:?
Private Sub Form_BeforeUpdate(Cancel As Integer)
    If Me.Dirty Then
      If MsgBox("Änderungen speichern?", vbYesNo, "Speichern?") = vbNo Then
        Me.Undo
      End If
    End If
End Sub

Gruß
Herbert

DF6GL

Hallo,

damit hinterfragst Du lediglich, ob geänderte Daten in die Tabelle abgelegt (einige Me.Undo  wären vorteilhaft) aber nicht, ob Formeigenschaften gespeichert werden sollen .

herb54

Hallo Franz,
im VBA Code der im Hintergrund des Formulares agiert werden tatsächlich Steuerelemente abgeschaltet
(AllowAdditions, AllowDeletions, AllowEdits auf false) um zu verhindern, dass nach der Eingabe eines Datensatzes fehlerhafte/unbeabsichtigte Eingaben erfolgen. Um daraufhin wieder Datensätze zu bearbeiten habe ich einen Button "Dateneingabe" angelegt der die Eigenschaften wieder auf true setzt.
Wobei ich den Button in der Endfassung ganz verschwinden lassen will und die Dateneingabe via Makro über einen Shortcut ausführen lassen wollte. Zur Erklärung: Die PC's befinden sich in einem öffentlichen Raum und der Mitarbeiter ist nicht immer am Arbeitsplatz!
Meine Frage: Wie kann ich das abfangen so, dass auch bei "unsauberem Beenden" nichts fehlerhaftes passiert?
Gruß
Herbert

herb54

Hallo,
vielleicht wäre das eine Lösung (sh. Anhang). Beim Entladen des Formulares kann man das unbeabsichtigte Schließen verhindern. Über eine CheckBox (Standardwert = false) die abgefragt wird und auf true stehen muss.
D.h. man muss zuerst die CheckBox aktivieren und kann dann erst aussteigen. In der MessageBox dann der Hinweis, dass nur mit "Schließen Button" beendet werden darf.
Theoretisch könnte man die CheckBox auch ausblenden und die Aktivierung im"Schließen Button" unterbringen.
Gruß
Herbert


Beaker s.a.

Und was ist damit?
Zitatausblenden mit "Schließen Schaltfläche = Nein" (Eigenschaften des Formulars)
Wenn das Kreuz nicht sichtbar ist, kann auch keiner draufklicken und deine
Checkbox samt Code ist überflüssig.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MzKlMu

Hallo,
anbei eine Beispieldb. Die DB kann nur über einen Button beendet werden. Es geht noch nicht mal das normale Beenden der DB.
Gruß Klaus

herb54

Hallo Ekkehard,
das mit dem Kreuz geht so leider nicht! Das habe ich ausprobiert: Ich muss leider auf Access 2003 zurückgreifen (Server). Dort kann man mit der Eigenschaft des Formulares "Schließen Schaltfläche = Nein" nur das kleine Kreuz wegkriegen (sh. Anhang) - das große (rote) bleibt. Ist im neuen Access nicht mehr so!
Hallo Klaus,
das muss ich ausprobieren - klingt interessant!
Vielen Dank für Eure Hilfe!
Gruß
Herbert

herb54

Hat wohl die Anlage nicht gespeichert- daher hier noch mal!

MzKlMu

Hallo,
mit dem großen Kreuz wird Access geschlossen. Das gibt es beides auch noch bei Access2016. Siehe Bild (A2016).

Bei meinem obigen Beispiel funktioniert auch das große Kreuz zum Beenden von Access nicht.
Gruß Klaus

herb54

Hallo Klaus, ja du hast Recht. Ansicht hängt wohl vom Access ab. Ich habe Access 2013. Bei mir erscheint das Ganze mit grauem Hintergrund (sh. Anhang Kreuz_Schließenschaltfläche_Nein). Wenn ich Schließenschlatfläche = Nein aktiviere wird nur das untere Kreuz deaktiviert.

Gruß
Herbert

MzKlMu

Hallo,
wenn Du die Eigenschaft "Mit Systemmenüfeld" ebenfalls auf Nein stellt ist alles weg (im Formular).
Gruß Klaus

herb54

Hallo Klaus,

leider nein! Unverändert: Nur ein Kreuz ist deaktiviert!

Gruß
Herbert