Announcement

Collapse
No announcement yet.

EDBEditError - Ungültiger Eingabewert.

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • EDBEditError - Ungültiger Eingabewert.

    Hallo,

    habe auf dem Formular eine TMaskEdit-Komponente gesetzt. Als Eingabemaske in "EditMask" habe ich !90/90/0000;1;
    vorgegeben, also das vierstellige Datumsformat.

    Weiterhin habe ich u.a. eine Interbase-Datenbank im Hintergrund laufen, in der das Feld, was diesem TMaskEdit
    sozusagen zugeordnet ist, ein Datumsfeld ist, also vom Typ Date.

    Wenn ich nun das Programm starte und versuche bei einem vorhandenen Datensatz mit Datumsfeld, den Eintrag des
    MaskEdit-Feldes lösche mit der Entf-Taste, so ist noch alles ok.

    Sobald ich aber versuche, den Fokus des Eingabefeldes zu wechseln auf ein beliebiges anderes Edit-Feld auf dem Formular,
    kommt der Fehler "Ungültiger Eingabewert. Benutzen Sie die ESC-Taste, um die Änderungen rückgängig zu machen".
    Im Debug-Modus kommt als zusätzliche Information EDBEditError zum Vorschein.

    Die Testeingabe des Mask-Edit-Feldes schaut vor dem Absturz so aus: "__.__.____".

    Versucht, das Programm schon beim Wechseln des Edit-Feldes den Wert in die Datenbank zu schreiben und kann es
    nicht, da das Feld in der Datenbank vom Typ Date ist und "__.__.____" nicht Null ist?

    Oder liegt der Fehler woanders?

    Wie kann ich das Programm dazu bewegen, Null für das Datumsfeld zu übergeben?

  • #2
    hallo Carsten

    mit TEditMask kann man sich und den user mächtig ärgern. Gerade bei Datum/Zeit Eingaben umgehe ich dies, indem ich mir eine vielseitig nutzbar Kalenderform geschrieben habe, die Datum/Zeit in allen möglichen strings und values zurückliefert.

    Grundsätzlich bist du immer auf der sicheren Seite, wenn du das Ergebnis der Datum/Zeit Eingabe als value an die Datenbank lieferst

    var
    dtMeinDatum: TDateTime;

    sMeinDatum,sNaechsterTag : string;


    begin

    sMeinDatum := '01.01.2002 10:00';

    dtMeinDatum := strtoDateTime(sMeinDatum);

    FieldbyName('MEINDATUM').value := dtmeinDatum;

    // und zurück wäre dann

    sMeinDatum := formatDateTime('dd.mm.yyyy hh:nn',FieldbyName('MEINDATUM').value);

    // mit den values lässt sich auch einfach rechnen

    sNaechsterTag := formatDateTime('dd.mm.yyyy hh:nn',FieldbyName('MEINDATUM').value + 1);

    end

    Falls Du das Rad nicht gänzlich neu erfinden willst, poste mir eine mail an [email protected] und ich schicke dir abens zwei Kalender-forms.(sofern du Interesse hast).Wenn's eilig ist, dann die mail an [email protected]

    gruß
    bernhar

    Comment

    Working...
    X