wieder ein Datumsfeld

  • Hallo an alle,
    ich stehe auf dem Schlauch...
    Ich habe ein Datumsfeld in dem nur Datumsangaben gemacht werden dürfen und dieses Datum muss mindestens eine Woche in der Zukunft liegen. Ansonsten soll eine Fehlermeldung kommen.


    Ich habe beim Vorgabewert eingetragen:

    Code
    @Adjust(@Today; 0;0;7;0;0;0)


    Das klappt, jubel...


    Dann frage ich in der Eingabeumsetzung ab:

    Code
    @If(@IsTime(@ThisValue); @ThisValue; @Return(@Prompt([Ok]; "Fehler"; "Tragen Sie bitte ein gültiges Datum ein."; ""; ""; "")))


    Ich kann eintragen was ich will (auch Buchstaben), es passiert überhaupt nix.


    In der Eingabevalidierung frage ich ab:

    Code
    _AkzeptiertesLoeschDatum := @Adjust(@Today; 0;0;7;0;0;0);
    @If(Loeschdatum <= _AkzeptiertesLoeschDatum ; @Return(@Prompt([OK]; "Fehler"; "Das Löschdatum muss mindestens 1 Woche in der Zukunft liegen"; ""; ""; "")); "")


    Da krieg ich unterschiedliche Meldungen:
    "Feld hat Validierungsformel nicht enstprochen" oder tatsächlich die gewünschte Fehlermeldung.
    Die Meldungen kommen allerdings immer, auch wenn das Datum mehr als 7 Tage in der Zukunft liegt.
    Wo liegt bloß der Fehler? Könnt ihr mir helfen?
    Gruß Karin

  • Eine Eingabeumsetzungsformel ist dafür da eine Eingabe in eine bestimmte Form umzusetzen nicht die Eingabe zu überprüfen.
    Als Rückgabewert erwartet diese die umgesetzte Form der Eingabe, also den Wert der dann ins Feld eingetragen werden soll.
    Die prüfung, die du hier machst gehört wenn dann ebenfalls in die Eingabevalidierungsformel mit rein. Mal abgesehen davon, daß Notes bei richtigem Feldtyp diese Prüfung schon selber macht.


    Eine Eingabevalidierungsformel muss mit @Success und @Failure arbeiten.
    Da in deiner Eingebevalidierungsformel niemals ein @Success kommt, wird die Validierung auch niemals wahr und damit kommen immer Meldungen:


    Code
    _AkzeptiertesLoeschDatum := @Adjust(@Today; 0;0;7;0;0;0);
    @If(Loeschdatum <= _AkzeptiertesLoeschDatum ; @Failure("Das Löschdatum muss mindestens 1 Woche in der Zukunft liegen"); @Success)
  • Das Feld ist Typ: Datum/Zeit. Ich kann trotztdem Buchstaben eintragen.
    Okay, habe die Formel aus der Eingabeumsetzung in die Eingabevalidierung übernommen.
    [code@If(@IsTime(Loeschdatum); Loeschdatum; @Failure( "Tragen Sie bitte ein gültiges Datum ein.")); @Success;


    _AkzeptiertesLoeschDatum := @Adjust(@Today; 0;0;7;0;0;0);
    @If(Loeschdatum <= _AkzeptiertesLoeschDatum ; @Failure("Das Löschdatum muss mindestens 1 Woche in der Zukunft liegen"); @Success)
    [/code]
    Kriege immer noch Fehlermeldungen: Feld hat Validierungsformel nicht entsprochen.
    -- ?? --
    Ratlos

  • @If(@IsTime(Loeschdatum); Loeschdatum; @Failure( "Tragen Sie bitte ein gültiges Datum ein."));
    a := @Adjust(@Today; 0;0;7;0;0;0);
    @Prompt([ok];"Loeschdatum"; @Text(@thisvalue - a));
    @If(Loeschdatum <a ; @Failure("Das Löschdatum muss mindestens 1 Woche in der Zukunft liegen"); @Success)


    mit kleiner statt kleiner gleich läuft das bei mir
    ich hab das erste @successs rausgeschmissen, denn schliesslich ist da noch kein success, sondern er soll weitermachen

  • Ich hab Deine Validierungsformel ein bisschen umgeschrieben:


    Code
    @If(@IsTime(@ThisValue); @Success; @Failure( "Tragen Sie bitte ein gültiges Datum ein."));
    
    
    _AkzeptiertesLoeschDatum := @Adjust(@Today; 0;0;7;0;0;0);
    
    
    @If(@ThisValue < _AkzeptiertesLoeschDatum ; @Failure("Das Löschdatum muss mindestens 1 Woche in der Zukunft liegen"); @Success)


    Jetzt kommen keine Fehler mehr.


    Beim zweiten Teil war der Vergleich "<=", da muss die Fehlermeldung kommen, wenn die Vorgabe stehen bleibt...

  • vielen Dank, jetzt klappt es :D


    Wenn ich allerdings einen Buchstaben eingebe , erscheint das Datum "01.04.2008". :-? Jetzt müsste eigentlich eine Fehlermeldung kommen. Wie fange ich das ab? Wie gesagt, das Feld ist ein Datumsfeld.
    Habt ihr hierfür auch eine Idee?

  • Es ist vollbracht.
    Fehler gefunden :hammer:
    Ich hatte das Feld auf Benutzerdefiniert umgestellt.


    Mit "Vorgaben von -Client-" funktioniert alles wunderbar...
    Ich danke Euch

  • :)


    wenn ich 'a' eingeb, dann kommt bei mir auch der 1.4.2008


    bei 'b' und bei 'aa' kommt eine Fehlermeldung


    dann interpretiert er das wohl als Zahl, die er in ein Datum umwandelt?

    • Offizieller Beitrag

    a hällt er für einen April-Scherz, deshalb kommt da auch der 1.4.08 raus ;)


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein