Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: datekk am Januar 15, 2016, 20:38:09

Titel: Feld muss ausgefüllt werden erzwingen
Beitrag von: datekk am Januar 15, 2016, 20:38:09
Hi. Ich habe in einem Formular Felder, welche unbedingt ausgefüllt werden müssen. Bei den betreffenden Feldern handelt es sich um Textfelder. In die Eigenschaften habe ich die Gültigkeitsregel "Ist nicht Null" eingegeben und bei Gültigkeitsmeldung habe ich einen freundlichen Text geschrieben.

Leider zeigen diese Einstellungen keinerlei Wirkung. Ich kann die Felder ganz einfach via Tabulator überspringen oder das Formular schließen.. Es ist so, als ob ich gar keine Gültigkeits Eigenschaften erfasst habe.

Woran liegt das oder mache ich was grundlegendes falsch? Ich finde auch nicht die Eigenschaft "Eingabe erforderlich"...

LG und schon mal Danke.
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: HB9876 am Januar 15, 2016, 20:45:07
Hi,
je nach Aufbau, evtl. einfach als Pflichtfeld in der zugrunde liegenden Tabelle?!

Gruss
Jens
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: ebs17 am Januar 15, 2016, 20:46:43
Regeln, die unbedingt einzuhalten sind, würde man primär in der Tabellendefiniton (Tabellenentwurf) hinterlegen, denn da gelten sie immer, also nicht nur bei Formulareingaben, sondern auf bei Aktionsabfragen oder Recordsetaktionen auf die Tabelle wie auch beim händischen Betrieb an der Tabelle.
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: datekk am Januar 15, 2016, 23:28:05
Das Trifft leider nicht zu. Ich verwalte in der gleichen Tabelle verschiedene Typen von Kontakten. Nur bei einem müssen die entsprechenden Felder ausgefüllt werden, beim anderen nicht. Ich nutze für die unterschiedlichen Typen auch unterschiedliche Formulare zur Erfassung der Daten.
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: datekk am Januar 15, 2016, 23:30:23
Also bleibt ggf. nur ein Workaround via VBA mit dem Ereignis "beim verlassen"... oder?
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: MzKlMu am Januar 15, 2016, 23:37:24
Hallo,
ZitatNur bei einem müssen die entsprechenden Felder ausgefüllt werden, beim anderen nicht.
das riecht nach einem verbesserungsbedürftigen Datenmodell.
Erkläre mal, warum das so ist.
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: datekk am Januar 16, 2016, 01:01:29
Nein, nicht gleich so hoch greifen ;) Stell dir einfach eine Tabelle mit Geschäftskontakten vor. Diese werden unterteilt in Kunden und Leads (also Soll-Kunden/Interessenten). Eine Spalte in der Tabellen unterscheidet den Typ. Und bei einem Typ müssen halt zwei Felder mehr ausgefüllt werden als beim anderen....
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: MaggieMay am Januar 16, 2016, 01:40:54
Hallo,

mAn besteht die einzig zuverlässige Kontrollmöglichkeit im Formular-Ereignis "Vor (bzw. Nach-) Aktualisierung".
Der Einsatz von Gültigkeitsregeln und die Nutzung sonstiger (Steuerelement-) Ereignisse zwecks Kontrolle der Dateneingabe bereiten sowohl dem Anwender als auch dem Entwickler nur unnötigen Stress.
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: datekk am Januar 16, 2016, 19:29:08
Ja, das sehe ich mittlerweile auch so... Ok besten Dank Euch :)
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: julle am Januar 18, 2016, 11:15:33

Private Sub txtAdresse_BeforeUpdate(Cancel As Integer)
If IsNull(Me!txtAdresse) Then

    MsgBox "Eingabe erforderlich", vbInformation, "Bitte Feld ausfüllen."
    Cancel = True

End If
End Sub


Ich hab das so gemacht, aber irgendwo ist da ein Fehler drin, sieht den jemand? Eben gings noch und jetzt garnicht mehr...
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: MaggieMay am Januar 18, 2016, 11:29:15
Hi,
ZitatEben gings noch
wie stellt sich dieses "Nicht Gehen" dar? Ist der Inhalt des Textfeldes evtl. nicht NULL sondern einfach nur leer ("")?
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: julle am Januar 18, 2016, 11:42:40
Zitat von: MaggieMay am Januar 18, 2016, 11:29:15
Hi,
ZitatEben gings noch
wie stellt sich dieses "Nicht Gehen" dar? Ist der Inhalt des Textfeldes evtl. nicht NULL sondern einfach nur leer ("")?
Die Meldung kommt nicht mehr wenn das Feld leer ist...
hab auch schon If (Me!txtAdresse) = "" Then .... versucht, ohne Erfolg

Weiß nicht wieso das schonmal ging und jetzt nichtmehr.   ???
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: DF6GL am Januar 18, 2016, 12:03:00
Hallo,

versuch mal:

If Len(nz(Me!txtAdresse,"")) = 0 Then
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: julle am Januar 18, 2016, 12:08:24
Zitat von: DF6GL am Januar 18, 2016, 12:03:00
Hallo,

versuch mal:

If Len(nz(Me!txtAdresse,"")) = 0 Then

Da bekomm ich die Meldung sowohl für den Fall, dass das Feld leer ist, als auch wenn etwas drin steht!!
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: MaggieMay am Januar 18, 2016, 12:10:39
Die Ereignisprozedur kommt nur bei Änderung des Textfeldes zum Einsatz, wenn nichts drinsteht und nichts eingetragen wird, passiert auch nichts.
Meinst du das vielleicht?

BTW:
ZitatDa bekomm ich die Meldung sowohl für den Fall, dass das Feld leer ist, als auch wenn etwas drin steht!!
Das glaube ich nicht.  ???
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: julle am Januar 18, 2016, 12:27:54
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
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag 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
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: julle am Januar 18, 2016, 15:21:11
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
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: DF6GL am Januar 18, 2016, 15:58:31
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
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: MzKlMu am Januar 18, 2016, 19:44:18
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.
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: julle am Januar 20, 2016, 11:05:46
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.
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag 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.

Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: julle am Januar 20, 2016, 12:05:57
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
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag 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"??
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: julle am Januar 20, 2016, 12:20:36
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
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: DF6GL am Januar 20, 2016, 12:29:47
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).
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: julle am Januar 20, 2016, 13:59:46
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
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: julle am Januar 20, 2016, 14:49:00
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.
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag 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.
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: julle am Januar 20, 2016, 15:59:04
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...
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: DF6GL am Januar 20, 2016, 16:04:07
Hallo,

in der Tat..  Dann nimm ein Listenfeld
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: Beaker s.a. am Januar 20, 2016, 21:29:20
Hallo Julle,
Was ich meinte ist:
Private Sub bDrucken_Click()

  Dim strMsg As String
  Dim blnFehler As Boolean

  strMsg = "Folgende Fehler müssen ausgefüllt werden:"

  If Len(Nz(Me!txtKunde, "")) = 0 Then
    blnFehler = True
    strMsg = strMsg & vbcrlf & "Kunde"
  ElseIf Len(Nz(Me!txtAdresse, "")) = 0 Then
    blnFehler = True
    strMsg = strMsg & vbcrlf & "Adresse"
  ElseIf Len(Nz(Me!txtProdukt, "")) = 0 Then
    blnFehler = True
    strMsg = strMsg & vbcrlf & "Produkt"
  End If

  If blnFehler Then
    MsgBox strMsg, vbInformation, "Bitte füllen Sie alle Felder aus!"
  Else
    DoCmd.RunCommand acCmdPrint
  End If

End Sub

Wie gesagt eine MsgBox für alles.
hth
gruss ekkehard
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: julle am Januar 21, 2016, 11:40:52
Zitat von: DF6GL am Januar 20, 2016, 16:04:07
Hallo,

in der Tat..  Dann nimm ein Listenfeld

Würde das gern aus Formatierungsgründen ohne Listenfeld umsetzen.
Jedes Kontrollkästchen gibt ja einen Wert aus, ich nehme an 0 für "nicht ausgewählt" und 1 für "ausgewählt".
Wenn man nun alle Werte addiert und das einen Wert ungleich 0 (bzw x>0) ergibt, wäre die Bedingung, dass mindestens eins ausgewählt ist, erfüllt.
Frage ist nun die Umsetzung. Ich müsste ja eine Prüfvariable als String einführen (als Summe aller Werte der Kontrollkästchen) und überprüfen.

Wie erstellt man so eine Summe?


Zitat von: Beaker s.a. am Januar 20, 2016, 21:29:20
Wie gesagt eine MsgBox für alles.
hth
gruss ekkehard
Danke für die Option, aber im Moment kommt ja auch nur ein Hinweis. Und in dem Hinweis von deinem Code steht in der Meldung auch nur das erste nicht ausgefüllte Feld und nicht alle fehlenden. Obwohls natürlich ein kompakterer Code ist  :)
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: DF6GL am Januar 21, 2016, 12:16:03
Hallo,

ausgehend von


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

kannst Du die Überprüfung genau so machen wie bei den Textfeldern auch, also jedes KK einzeln für sich testen und entspr. reagieren.

Natürlich könnten die Einzelprüfungen auch innerhalb einer Schleife erfolgen, die entweder über alle KK läuft oder innerhalb mehrerer Schleifen, die durch jede Gruppe von KK laufen.

Die "Gruppen" könnten so gebildet werden, als dass für die Benamsung der KK eine fortlaufende Ziffer eingesetzt wird, die zur "Berechnung" des akt. KK herangezogen wird.








Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: julle am Januar 21, 2016, 13:53:12
Zitat von: DF6GL am Januar 21, 2016, 12:16:03
kannst Du die Überprüfung genau so machen wie bei den Textfeldern auch, also jedes KK einzeln für sich testen und entspr. reagieren.

Natürlich könnten die Einzelprüfungen auch innerhalb einer Schleife erfolgen, die entweder über alle KK läuft oder innerhalb mehrerer Schleifen, die durch jede Gruppe von KK laufen.

Die "Gruppen" könnten so gebildet werden, als dass für die Benamsung der KK eine fortlaufende Ziffer eingesetzt wird, die zur "Berechnung" des akt. KK herangezogen wird.

hab das gelöst mit:

Dim intSumme As Integer
   
    intSumme = Me!ichk1 + Me!chk2 + Me!chk3 + Me!chk4 + Me!chk5

   
ElseIf intSumme = 0 Then
        MsgBox "Bitte mindestens eine Kontrollkästchen anhaken!"
        Exit Sub

Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: DF6GL am Januar 21, 2016, 16:38:06
Hallo,

das ist ok, wenn eine solche Plausi-Prüfung dem Anspruch genügt...
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: julle am Januar 21, 2016, 16:40:41
Zitat von: DF6GL am Januar 21, 2016, 16:38:06
Hallo,

das ist ok, wenn eine solche Plausi-Prüfung dem Anspruch genügt...
Es tut seinen Dienst. Aber rein interessehalber, was wäre an anderen Möglichkeiten qualitativ besser?
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: MzKlMu am Januar 21, 2016, 17:05:22
Hallo,
@Julle
Hast Du Dir das Beispiel hier in diesem Thema (#19) nicht angesehen ?
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: DF6GL am Januar 21, 2016, 17:06:44
Hallo,

qualitativ?

Das heißt, den Ansprüchen (der Logik) genügen.

Und das heißt wiederum, Du(!) musst die Ansprüche (den Algorithmus) der Plausibilität definieren.

Deine Prüfung auf 0-Summe erfüllt nur den Anspruch, mindestens einen Haken setzen zu müssen. Bestimme KK, bzw. "Gruppen" sind so nicht bestimmbar. ...
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: julle am Januar 21, 2016, 17:16:51
Zitat von: DF6GL am Januar 21, 2016, 17:06:44
Hallo,

qualitativ?

Das heißt, den Ansprüchen (der Logik) genügen.

Und das heißt wiederum, Du(!) musst die Ansprüche (den Algorithmus) der Plausibilität definieren.

Deine Prüfung auf 0-Summe erfüllt nur den Anspruch, mindestens einen Haken setzen zu müssen. Bestimme KK, bzw. "Gruppen" sind so nicht bestimmbar. ...
Nunja, bestimmte Gruppen hab ich nun durch unterschiedliche Summen-Variablen gekennzeichnet. Von daher alles paletti!

Zitat von: MzKlMu am Januar 21, 2016, 17:05:22
Hallo,
@Julle
Hast Du Dir das Beispiel hier in diesem Thema (#19) nicht angesehen ?
Doch hab ich, vielen Dank dafür, war hilfreich fürs Verständnis!
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: julle am Februar 05, 2016, 10:13:14
Zitat von: MzKlMu am Januar 21, 2016, 17:05:22
Hallo,
@Julle
Hast Du Dir das Beispiel hier in diesem Thema (#19) nicht angesehen ?

Ich habe vom Beispiel die Funktion nachgebaut, dass das Schließen der Formulare nur über einen Button funktioniert.

Private Sub Beenden_Click()
    bolSchliessenErlaubt = True
    DoCmd.Close acForm, "frmStart"
    DoCmd.Quit
End Sub


Private Sub Form_Unload(Cancel As Integer)
    If bolSchliessenErlaubt = False Then
        MsgBox "Formular bitte per Button verlassen" & vbCrLf & vbCrLf & "Die Anwendung kann nur über den Button <Beenden> geschlossen werden"
        Cancel = True
    End If
End Sub

passendes Modul dazu
Option Compare Database

Option Explicit

Public bolSchliessenErlaubt As Boolean



Ich hab ein Startformular welches weitere Formulare anwählt.

Problem ist nun, dass wenn ich das von "frmStart" ausgewählte Formular schließe (geht nur über den Button) komme ich ja wieder auf "frmStart" zurück, in diesem Moment kann ich das Formular "frmStart" aber wieder normal schließen, also der Code greift nicht mehr.

Wisst ihr wo da ein Fehler liegen könnte?
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: MaggieMay am Februar 05, 2016, 11:23:04
Hallo,

wenn du eine einzige globale Variable zur Steuerung aller Formulare einsetzen willst, so musst du sie bspw. beim Laden eines Formulars auch immer wieder auf FALSE setzen.
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: julle am Februar 05, 2016, 13:23:18
Zitat von: MaggieMay am Februar 05, 2016, 11:23:04
Hallo,

wenn du eine einzige globale Variable zur Steuerung aller Formulare einsetzen willst, so musst du sie bspw. beim Laden eines Formulars auch immer wieder auf FALSE setzen.

verstehe nicht ganz wie so etwas aussehen würde! außerdem bleibt das Formular "frmStart" ja die ganze Zeit geöffnet!
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: MaggieMay am Februar 05, 2016, 14:03:12
Mit dem frmStart hat es ja nichts zu tun, wenn du das Speichern in den Bearbeitungsformularen kontrollieren willst.

Was hält dich davon ab, es einfach mal auszuprobieren?
Aktiviere das Ereignis "Beim Laden" und schreibe die folgende Codezeile in die Ereignisprozedur:
bolSchliessenErlaubt = False
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: DF6GL am Februar 05, 2016, 14:21:11
Hallo,


Wenn jedes einzelne Form für sich selber "geprüft" werden soll, dann gehört die "bolSchliessenErlaubt"-Variable in die einzelnen Formularklassenmodule und nicht in ein Standardmodul...
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: julle am Februar 05, 2016, 14:54:27
Zitat von: MaggieMay am Februar 05, 2016, 14:03:12
Mit dem frmStart hat es ja nichts zu tun, wenn du das Speichern in den Bearbeitungsformularen kontrollieren willst.

Was hält dich davon ab, es einfach mal auszuprobieren?
Aktiviere das Ereignis "Beim Laden" und schreibe die folgende Codezeile in die Ereignisprozedur:
bolSchliessenErlaubt = False

Die Überprüfungen in den einzelnen Formularen funktioniert tadellos (dort ist jeweils die bolSchliessenErlaubt - Variable hinterlegt), wenn ich das nun geschlossen hab und auf das Startformular zurückkehre (das ja immernoch geöffnet ist) dann kann ich das ganz einfach schließen, auch mit dem Code beim laden.

Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: MaggieMay am Februar 05, 2016, 15:52:02
Zitatdort ist jeweils die bolSchliessenErlaubt - Variable hinterlegt
Das hattest du bis jetzt nicht erwähnt, daher dachte ich es gäbe nur eine globale Variable, so wie du es in #40 gezeigt hattest.

Warum willst du denn das Schließen des Startformulars verhindern, werden dort ebenfalls Daten eingegeben?

Zitatauch mit dem Code beim laden.
Was willst du damit sagen? Beim Laden wird ja nicht das Schließen verhindert.
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: MaggieMay am Februar 05, 2016, 15:59:02
Nachtrag:
Vielleicht habe ich dich doch noch richtig verstanden.

Zitat von: julle am Februar 05, 2016, 10:13:14
komme ich ja wieder auf "frmStart" zurück, in diesem Moment kann ich das Formular "frmStart" aber wieder normal schließen, also der Code greift nicht mehr.
Der Code "greift" schon, nur die Variable steht ja durch das letzte Schließen auf True.

Das kannst du folgendermaßen lösen:

Private Sub Form_Unload(Cancel As Integer)
    If bolSchliessenErlaubt = False Then
        MsgBox "Formular bitte per Button verlassen" & vbCrLf & vbCrLf & _
                "Die Anwendung kann nur über den Button <Beenden> geschlossen werden"
        Cancel = True
    End If
    bolSchliessenErlaubt = False
End Sub

Im Load-Ereignis kannst du den Befehl dann wieder entfernen.
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: julle am Februar 05, 2016, 16:05:51
Zitat von: MaggieMay am Februar 05, 2016, 15:59:02
Nachtrag:
Vielleicht habe ich dich doch noch richtig verstanden.

Hast du, vielen Dank! :)
So funktioniert das, macht auch vollkommen Sinn!

viele Grüße!
Titel: Re: Feld muss ausgefüllt werden erzwingen
Beitrag von: MaggieMay am Februar 05, 2016, 16:29:43
"ordentlich" programmiert sähe das dann so aus:
Private Sub Form_Unload(Cancel As Integer)
    If bolSchliessenErlaubt = False Then
        MsgBox "Formular bitte per Button verlassen" & vbCrLf & vbCrLf & _
                "Die Anwendung kann nur über den Button <Beenden> geschlossen werden"
        Cancel = True
    Else
        bolSchliessenErlaubt = False
    End If
End Sub