Zum Inhalt springen

Datum sinnvoll validieren


Dominik Scharrer

Empfohlene Beiträge

Wir bauen eine smap für unsere Fotografen, um auf einer Veranstaltung eine Einverständniserklärung von den fotografierten Personen zu erfassen.

Ich versuche dabei verzweifelt, das erfasste Geburtsdatum zu validieren. Ich möchte verhindern, dass z.B. das Geburtsjahr vergessen wird (passiert häufig, dass wir eingaben mit dem aktuellen Jahr als Geburtsjahr vorfinden).

Zudem möchte ich sicherstellen, dass die Personen volljährig sind. Es muss bei der eingabe als geprüft werden, ob das Datum mindestens 18 Jahre in der Vergangenheit liegt. Das scheitert solch alleine daran, dass ich in formeln nicht einfach das heutige Datum in die berechnung mit einfließen lassen kann. 
Nach dem was ich im forum bereits gefunden habe, gibt es keine TODAY() Variable, sondern ich muss ein extra Feld, was man extra bedienen muss, anlegen. (timestamp)

Das sieht furchtbar unprofessionell aus, wenn man dem "Kunden" das Smartphone zum ausfüllen in die hand drückt.

Ich muss mir nun damit behelfen, das ich wie in nachfolgendem Post das alter Berechne und anzeige. Validieren kann ich das aber auch nicht, denn wenn ich eine Regel erstellen will, die auf der Berechnung basiert, kann ich diese nur nach ganzen Zahlen abfragen. Es kommt abe rnie eine ganze zahl bei der Berechung heraus. Eine Regel ">18" ist gar nicht möglich.

Ich muss zugeben, das finde ich sehr schwach. Oder gibt es irgend einen Lösungsansatz, den ich komplett übersehen habe?

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Dominik Scharrer

das Datum-Thema wurde in der Community schon mehrfach angesprochen und auch intensiv diskutiert.
Der Wunsch nach TODAY() oder NOW() ist sehr groß und ich bin mir sicher, das die smappies bestimmt auch dazu eine gute Lösung anbieten werden.

Auch wenn es nicht immer super elegant aussieht, man kommt trotzdem zu einem Ergebnis.

Für deinen Fall hätte ich folgenden Ansatz. Schau mal ob du was damit anfangen kannst.

So sieht der Part für die Validierung aus:

image.png.116406e008b689217153c9c3948c31ef.png

Die "Differenz" subtrahiert einfach die beiden Datumsangaben:
image.thumb.png.c2638aca8b6522312d32507cb9a2cc9e.png

Im Baustein "Tage" wird durch TOTALDAYS() als Zahlenwert ausgegeben:
image.thumb.png.9de823dd2321d3404f8f200ef09c6cc5.png

In der "Zusammenfassung" erfolgt dann die Validierung ob über oder unter 18 Jahre.
image.thumb.png.78ac5b3eb110f655fa1a68dd9a64b800.png
 

Man kann die Ausgabe auch schöner mit Symbolen oder Grafiken anzeigen lassen. 

Die Bausteine "Differenz" und "Tage" werden als Zwischenergebnisse genutzt und werden im smap nicht angezeigt. Das heißt, die Infos "stören" nicht.

Mit dem Ergebnis aus der Zusammenfassung kannst du nun deine weitere Vorgehensweise festlegen.


 

  • Like 2
Link zu diesem Kommentar
Auf anderen Seiten teilen

@Dominik Scharrer Altersprüfung, oh ja, ein Anwendungsfall, mit dem du nicht alleine dastehst. 

Um dafür zu sorgen, dass es nur mit Datumseingaben weitergehen soll, die in einer Mindestentfernung vom aktuellen Datum liegen, wäre eigentlich eine Möglichkeit wünschenswert, Validierungsregeln für diesen Baustein zu hinterlegen. So wie es bei Text- und Zahleneingabefeldern ja auch möglich ist. Oder alternativ, wenn man es über Formeln lösen und beispielsweise wie in @Bülent Erbass Vorschlag zumindest das resultierende Alter und Hinweise dazu ausgeben möchte, hätte man gern das aktuelle Datum verfügbar in Formeln. Das Nutzer das dann erst angeben müssen, funktioniert zwar mit dem Timestamp Brick ganz vernünftig, ist wirklich eher ein Workaround. 

Im Grunde erscheint mir aber nur die erste Variante mit der Validierungsregel eine vollständige Lösung für das Problem zu sein, weil Validierung ja genau dafür gemacht ist, bei ungültigen Werten eine Fehlermeldung anzuzeigen und das Absenden mit unerlaubten Werten zu verhindern. Die Funktion könnte zum Beispiel so aussehen, dass man als Creator am Datumsauswahlbaustein einen erlaubten Datumsbereich konfigurieren, und dafür auch das jeweils aktuelle Datum als Grenzwert einsetzen kann.
Was denkt ihr dazu?

  • Danke 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Bitte melde Dich an, um einen Kommentar zu hinterlassen

Du kannst nach der Anmeldung einen Kommentar hinterlassen



Jetzt anmelden
×
×
  • Neu erstellen...