Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Formular schliessen verbieten wenn Eingaben fehlen

238 views
Skip to first unread message

Nicolas Weber

unread,
Apr 7, 2000, 3:00:00 AM4/7/00
to
Wie kann ich das Schliessen (docmd.close acForm, "frmName") eines Formulars
verhindern, wenn noch nicht alle Muss-Eingaben ausgefüllt sind?
Wenn ich das Formular über x schliesse bekomme ich eine Meldung, dass nicht
alles ausgefüllt ist, warum nicht über VBA?


__________________________
Nicolas Weber
nwe...@s-direktnet.de

Joachim F. Behr

unread,
Apr 7, 2000, 3:00:00 AM4/7/00
to
Hallo Nicolas

Beim Formular-Ereignis 'bei Entladen'...

Private Sub Form_Unload(Cancel As Integer)
'If MsgBox("Wirklich?", vbYesNo) <> vbYes Then Cancel = True
If Me.Wichtige_Eingabe = "" Then Cancel = True
End Sub


Bye Jo.


Plattner Wolfgang

unread,
Apr 8, 2000, 3:00:00 AM4/8/00
to
Guten Morgen

"Nicolas Weber" <nwe...@s-direktnet.de> schrieb im Newsbeitrag
news:38ee1044$0$17...@businessnews.de.uu.net...


> Wie kann ich das Schliessen (docmd.close acForm, "frmName") eines
Formulars
> verhindern, wenn noch nicht alle Muss-Eingaben ausgefüllt sind?
> Wenn ich das Formular über x schliesse bekomme ich eine Meldung, dass
nicht
> alles ausgefüllt ist, warum nicht über VBA?

Automatisch geht da nix.
Du musst die entsprechenden Felder auf Inhalt überprüfen.
Das kannst du beim Verlassen des entsprechenden Feldes (einfacher) oder vor
dem SchliessenEreignis (komplizierter) und dann auch das Schliessen
verhindern.

--
gruss vom berg

Henry Habermacher

unread,
Apr 8, 2000, 3:00:00 AM4/8/00
to
na, bin nicht sicher, ob das nicht auch automatisch geht.

mach mal folgenden code in das betreffende form rein

Option Compare Database
Option Explicit

Dim bolError As Boolean

Private Sub Form_AfterUpdate()
bolError = False
End Sub

Private Sub Form_Error(DataErr As Integer, Response As Integer)
bolError = True
Select Case DataErr
Case 2169 'schliessen rückfrage unterdrücken
Response = acDataErrContinue
Case Else
Response = acDataErrDisplay
End Select
End Sub

Private Sub Form_Unload(cancel As Integer)
If bolError Then
bolError = False
cancel = True
End If
End Sub

der fehler wird automatisch ausgegeben, das unload ereignis wird
abgebrochen und die daten werden auf den ursprungswert zurückgesetzt.

vollautomatisch, oder?

hth
henry

--
Ich beantworte keine Fragen per E-Mail auf Postings

Plattner Wolfgang schrieb in Nachricht
<38eedb76$0$34...@SSP1NO17.highway.telekom.at>...

Plattner Wolfgang

unread,
Apr 8, 2000, 3:00:00 AM4/8/00
to
oh Henry

> Option Compare Database
> Option Explicit
>
> Dim bolError As Boolean
>
> Private Sub Form_AfterUpdate()
> bolError = False
> End Sub
>
> Private Sub Form_Error(DataErr As Integer, Response As Integer)
> bolError = True
> Select Case DataErr
> Case 2169 'schliessen rückfrage unterdrücken
> Response = acDataErrContinue
> Case Else
> Response = acDataErrDisplay
> End Select
> End Sub

ich hab den Code jetzt noch nicht probiert, aber woher käme denn der Fehler
für >Form_Error<, wenn er die Eingabefelder einfach so belässt, ohne eine
Eingabe zu fordern?
>automatisch< hiess für mich, dass er glaubt, Access erkenne
was-weiss-ich-wie , dass leere Felder einfach falsch sind.
Wenn er dann Code einsetzt zur Prüfung, läufts ja dann eh >automatisch< :-)

--
gruss vom berg

Henry Habermacher

unread,
Apr 9, 2000, 3:00:00 AM4/9/00
to
na aber,

der form_error wird von access ausgelöst, wenn zB. ein not null feld
nicht gefüllt ist. es ist natürlich schon so, dass die feld
eigenschaften entsprechend eingestellt sein müssen, also "eingabe
erforderlich = Ja", aber so dämlich wird der fragesteller ja wohl nicht
sein, oder?

im gegensatz zu dir habe ich den code probiert und schon mehrfach in
betrieb und er läuft tadellos. die fehlermeldung sagt sogar aus, welches
feld denn was drin haben sollte und der 2169 fange ich ab, damit die
lästige frage nicht kommt, ob denn nun das form trotzdem geschlossen
werden soll, auch wenn die daten verloren gehen. dieser code ist sehr
generisch und daher bezeichne ich es als automatismus. ich muss also
nicht einen komplizierten before_update event ausprogrammieren, nur um
herauszufinden, ob denn nun alle felder, die was drin haben sollen, auch
was drin haben. wenn ich nämlich eines zu den mussfeldern hinzunehme
oder entferne, muss ich sonst den code wieder anpassen. mit diesem
mechanismus definiere ich das nur einmal bei der feld eigenschaft.

also, bevor du hier rummeckerst, solltest du zumindest die mühe machen,
den code auszuprobieren. gell? ich schreibe es normalerweise zum posting
dazu, wenn ich ungetesteten code einfüge.

Gruss und nichts für ungut

Henry

--
Ich beantworte keine Fragen per E-Mail auf Postings

Plattner Wolfgang schrieb in Nachricht

<38ef61e7$0$36...@SSP1NO17.highway.telekom.at>...

0 new messages