Benutzer mit den meisten Antworten
Feld-Gültigkeitsregel funktioniert nicht - bug entdeckt?

Frage
-
Hallo zusammen
ich nutze die Gültigkeitsregeln ganz gerne, um grobe Plausibilitätsprüfungen abzufangen.
Jetzt wollte ich für ein Feld (nennen wir es mal A) folgende Bedingung umsetzen:
META: Es ist kein Wert erlaubt oder, wenn ein Wert angegeben wird, muss dieser größer als 0 sein.Folglich habe ich als Gültigkeitsregel folgende Bedingung eingetragen:
IstNull([A]) Oder ((Nicht IstNull([A])) Und [A]>0)
Doch es wird fälschlicherweise der Wert "0" zugelassen!? (sonst passt es)
Obwohl die die Ausgabe der Einzelbedingungen 0 ODER (-1 UND 0) ergibt. Und bei 0 (Falsch) dürfte der Wert doch nicht akzeptiert werden und die MessageBox sollte doch eigentlich kommen.
Oder kann mir das Verhalten jemand plausibel erklären? Denkfehler?
Vielen Dank!
(verwendet wird Access 16.0.10363.20015 x64)- Bearbeitet Michael aus München Freitag, 7. August 2020 22:12
Antworten
-
Hallo Michael,
Also wenn ich das richtig verstanden habe soll deine Bedingung True/-1 ergeben wenn die Zahl "A" größer und ungleich "0" ist. Dann wäre die Formel ((Nicht IstNull([A])) Und [A]>0)
- Als Antwort markiert Michael aus München Montag, 10. August 2020 08:02
Alle Antworten
-
Hallo Michael,
ich bin nicht so der Access Profi, daher nur ins Blaue geraten:
Ist das Feld überhaupt numerisch? Wenn das ein alphanumerisches Feld ist, muss man den Wert für numerische Operationen vorher evtl. in eine Zahl umwandeln.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
Hallo Michael,
ich bin nicht so der Access Profi, daher nur ins Blaue geraten:
Ist das Feld überhaupt numerisch? Wenn das ein alphanumerisches Feld ist, muss man den Wert für numerische Operationen vorher evtl. in eine Zahl umwandeln.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport
-
Hallo Michael,
Also wenn ich das richtig verstanden habe soll deine Bedingung True/-1 ergeben wenn die Zahl "A" größer und ungleich "0" ist. Dann wäre die Formel ((Nicht IstNull([A])) Und [A]>0)
- Als Antwort markiert Michael aus München Montag, 10. August 2020 08:02
-
Funktioniert tatsächlich! *erstaunt*
Hast Du auch noch eine Erklärung parat? ;)
Bei Deiner Schreibweise sollte man meinen, dass dafür keine leeren Felder zulässig sind. Sind sie aber! Warum auch immer. Bissl unlogisch, oder?
PS: Dann genügt auch einfach die Gültigkeitsregel [A]>0 einzutragen.- Bearbeitet Michael aus München Sonntag, 9. August 2020 18:38
-
Es ist im background so logisch, dass es wieder unlogisch ist ;)
IstNull([A]) => ergibt bei "0" und "leerem Feld" =>TRUE => also läuft das ding schon bei "0" durch.
((Nicht IstNull([A])) Und [A]>0) => Nicht IstNull([A] ist in [A]>0 enthalten, also erfüllt [A]>0 alleine die Bedingung.
Also ganz Kurz: 0 entspricht 0 | leeres Feld entspricht 0 => wir wollen somit alles was größer 0 ist => [A]>0
-
Bei Deiner Schreibweise sollte man meinen, dass dafür keine leeren Felder zulässig sind. Sind sie aber! Warum auch immer. Bissl unlogisch, oder?
Null wird über die Eigenschaft "Eingabe erforderlich" gesteuert. Steht da "Nein", ist Null erlaubt.
Gruss - Peter
Mitglied im www.dbdev.org
Access-FAQ: www.donkarl.com- Bearbeitet Peter DoeringMVP, Moderator Sonntag, 9. August 2020 20:15