Neuigkeiten:

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

Mobiles Hauptmenü

Feld muss ausgefüllt werden erzwingen

Begonnen von datekk, Januar 15, 2016, 20:38:09

⏪ vorheriges - nächstes ⏩

julle

#15
das eine Problem ist behoben, hatte mich wo bei der Bezeichnung geirrt, aber jetzt passiert wieder garnichts (die Meldung erscheint nicht). ich bin am verzweifeln, danke für deine/eure Geduld!!

Private Sub Form_Open(Cancel As Integer)

DoCmd.Maximize


End Sub



Private Sub txtKunde_BeforeUpdate(Cancel As Integer)
  If Len(Nz(Me!txtKunde, "")) = 0 Then

    MsgBox "fehlende Eingabe", vbInformation, "Bitte füllen Sie alle Felder aus"
    Cancel = True

End If
End Sub

Beaker s.a.

Hallo,
Mal abgesehen davon, dass Mal wieder nur "geht nicht" gepostet wird (wann soll die Meldung denn erscheinen?),
würde ich die Prüfung in das FORM_BeforeUpdate-Ereignis verlagern, und dort alle Pflichtfelder der Reihe nach überprüfen.
1. weil ich da den Code nur einmal brauche,
2. den Anwender nicht mit ständigen MsgBoxen nerve, und
3. ich dort eben nur eine Msg soweit aufbereiten kann, dass sie dem Anwender gleich zeigt welche Felder beanstandet werden.
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)

julle

Zitat von: Beaker s.a. am Januar 18, 2016, 15:07:15
Hallo,
Mal abgesehen davon, dass Mal wieder nur "geht nicht" gepostet wird (wann soll die Meldung denn erscheinen?),
würde ich die Prüfung in das FORM_BeforeUpdate-Ereignis verlagern, und dort alle Pflichtfelder der Reihe nach überprüfen.
1. weil ich da den Code nur einmal brauche,
2. den Anwender nicht mit ständigen MsgBoxen nerve, und
3. ich dort eben nur eine Msg soweit aufbereiten kann, dass sie dem Anwender gleich zeigt welche Felder beanstandet werden.
gruss ekkehard

Hi ekkehard,

nungut, es soll ja eine Fehlermeldung erscheinen wenn das Feld nicht ausgefüllt wird. Diese Meldung erscheint nicht, ich kann das Feld unausgefüllt überspringen. Ich verstehe einfach nicht warum es nicht funktioniert...

Eine übergeordnete Fehlermeldung wäre natürlich wünschenswert, ich weiß allerdings nicht wie ich das per VBA formulieren soll. Bin leider nicht vom Fach, ich bin gerade am Lernen und viel lesen. Aber klappen tut es noch nicht so wirlich ;)
Wie könnte ich denn die Textfelder zusammen abfragen?

viele Grüße
Julian

DF6GL

Hallo,

Zitatich kann das Feld unausgefüllt überspringen. Ich verstehe einfach nicht warum es nicht funktioniert...

ganz einfach:  das Ereignis zum Starten der Ereignisprozedur wird nicht ausgelöst, wenn das Feld übersprungen wird...

MaggieMay hat's doch erklärt:
ZitatDie Ereignisprozedur kommt nur bei Änderung des Textfeldes zum Einsatz, ..

Insofern ist das Form-Ereignis "Vor Aktualisierung" für solche Plausibilitäts-Prüfungen am Besten geeignet... und das wiederum hat Ekkehard erklärt..

Sub Form_BeforeUpdate (Cancel as Integer)

If Isnull(Me!Textfeld1) Then
Msgbox "Bitte Textfeld1 ausfüllen"
Cancel =true
Me!Textfeld1.Setfocus
End If

...

If <Weitere Felder zur Prüfung>
.
.
End If

End Sub
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

MzKlMu

#19
Hallo,
im Anhang eine kleine Beispieldb für Pflichtfelder.
Hier kann noch nicht mal die DB beendet werden, wenn nicht alle Pflichtfelder ausgefüllt sind.
Gruß Klaus

julle

Zitat von: DF6GL am Januar 18, 2016, 15:58:31

Insofern ist das Form-Ereignis "Vor Aktualisierung" für solche Plausibilitäts-Prüfungen am Besten geeignet... und das wiederum hat Ekkehard erklärt..


Hab ich so versucht, man kann trotzdem ein leeres Formular ausdrucken...
Die anderen Zeitpunkte machen für mich Sinn irgendwo, aber wann "springt" das Form-Ereignis "Vor Aktualisierung" denn an?
Das Formular wird ja nicht aktualisiert oder gespeichert, sondern soll nur gedruckt werden.

DF6GL

Hallo,

handelt es sich um ein ungebundenes Formular? Dann treten solche Ereignisse auch nicht auf.

Als geeignetes Ereignis könnte z. B. das Klick-Ereignis einer Schaltfläche herhalten, über die  das Form ausgedruckt wird.

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

julle

Zitat von: DF6GL am Januar 20, 2016, 11:16:26
Hallo,

handelt es sich um ein ungebundenes Formular? Dann treten solche Ereignisse auch nicht auf.

Als geeignetes Ereignis könnte z. B. das Klick-Ereignis einer Schaltfläche herhalten, über die  das Form ausgedruckt wird.

Es ist ein ungebundenes Formular, also hat das deswegen nicht funktioniert. Ich nähere mich Stück für Stück, daher danke für die Hilfe und Geduld nochmal!

Ich habe nun den Druck-Button mit der Überprüfung verknüpft, das funktioniert auch! Das eigentliche Drucken wurde durch ein "eingebettetes Makro" angestoßen, was ich ja nun manuell hinter die Ereignisprozedur packen muss.
der Befehl ist hier ja DoCmd.RunCommand acCmdPrint

Mit welchem Ausdruck verknüpfe ich nun beides?
Überprüfung positiv (alle Felder ausgedruckt) = Druckmenü startet
Überprüfung negativ (ein/ mehrere Felder fehlen) =Druckmenü startet nicht

MaggieMay

Hi,

wie sieht denn deine Prüfung aus? Gibte es da so etwas wie "If - Then - Else"??
Freundliche Grüße
MaggieMay

julle

Zitat von: MaggieMay am Januar 20, 2016, 12:17:36
Hi,

wie sieht denn deine Prüfung aus? Gibte es da so etwas wie "If - Then - Else"??

Nee, im Moment klappert das auch jedes Feld einzeln ab und wirft pro Feld eine Fehlermeldung aus.
(aber es funktioniert schonmal :) )
Private Sub bDrucken_Click()
  If Len(Nz(Me!txtKunde, "")) = 0 Then

    MsgBox "Kunde fehlt", vbInformation, "Bitte füllen Sie alle Felder aus"
    Cancel = True
   
End If
   
  If Len(Nz(Me!txtAdresse, "")) = 0 Then

    MsgBox "Adresse fehlt", vbInformation, "Bitte füllen Sie alle Felder aus"
    Cancel = True
   
End If

End Sub

DF6GL

Hallo,

Was erwartest Du von "Cancel = True"  ?


Die Klick-Ereignisprozedur hat kein solches Argument und die Codezeile läuft ins Leere, zumal Du vermutlich "Option Explicit" nicht in den , bzw. allen Modulköpfen eingetragen hast. Das solltest Du dringend nachholen.


Schreib statt "Cancel = true"   "Exit Sub" ....


Es fehlt aber auch noch die Druck-Funktion(alität).
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

julle

#26
Private Sub bDrucken_Click()
  If Len(Nz(Me!txtKunde, "")) = 0 Then

    MsgBox "Kunde fehlt", vbInformation, "Bitte füllen Sie alle Felder aus"
    Exit Sub



ElseIf Len(Nz(Me!txtAdresse, "")) = 0 Then

    MsgBox "Adresse fehlt", vbInformation, "Bitte füllen Sie alle Felder aus"
    Exit Sub


ElseIf Len(Nz(Me!txtProdukt, "")) = 0 Then

    MsgBox "Produkt fehlt", vbInformation, "Bitte füllen Sie alle Felder aus"
    Exit Sub
   
Else
DoCmd.RunCommand acCmdPrint


End If

End Sub


läuft sauber durch! Danke für die Unterstützung! :)

Edit: Wenn ich den Druckdialog abbreche, kommt eine Laufzeitfehler als Fehlermeldung, sollte nicht weiter schlimm sein, aber kann man das umgehen?

Jetzt muss nurnoch der Druck zweimal auf verschiediene Drucker ausgegeben werden, da muss ich mich nochmal in die Quellen einlesen

julle

Auf dem Formular sind eine oder mehrere Gruppen an Kontrollkästchen.
Gibt es eine Bedingung (ähnlich der oben) die den Nutzer dazu zwingt, ein odere mehrere Kästchen dieser Gruppe zu markieren?
Zumal diese "Gruppen" erstmal definiert werden müssten.

DF6GL

Hallo,

wenn mit "Gruppen an Kontrollkästchen"   Optionsgruppen-Steuerelemente , in/auf denen Kontrollkästchen sitzen, gemeint sind, dann hat jedes dieser OG-Steuerelemente einen Optionswert, den es auszuwerten gilt....

Um die Fehlermeldung, die beim Abbruch des Druckvorgangs erscheint, zu unterdrücken, kann einfach ein "On Error Goto Next"  vor der Druck-Codezeile eingefügt werden.  Allerding wäre ein vernünftiger Errorhandler-Code besser angebracht, insbesondere, wenn es weiteren Code nach dem Druck-Befehl geben sollte.
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

julle

Zitat von: DF6GL am Januar 20, 2016, 15:12:00
Hallo,

wenn mit "Gruppen an Kontrollkästchen"   Optionsgruppen-Steuerelemente , in/auf denen Kontrollkästchen sitzen, gemeint sind, dann hat jedes dieser OG-Steuerelemente einen Optionswert, den es auszuwerten gilt....

Um die Fehlermeldung, die beim Abbruch des Druckvorgangs erscheint, zu unterdrücken, kann einfach ein "On Error Goto Next"  vor der Druck-Codezeile eingefügt werden.  Allerding wäre ein vernünftiger Errorhandler-Code besser angebracht, insbesondere, wenn es weiteren Code nach dem Druck-Befehl geben sollte.

Ich hab eine Optionsgruppe angelegt, kann diese auch auslesen, aber es muss eine Mehrfachauswahl möglich sein. Das geht mit den Optionsgruppen meines Wissens nach nicht...