WebAG Automat 5.0

Dokumentation Übersicht
Copyright © Enterprise Web AG.

webag_logo.jpg (2199 Byte)

Formularsystem 2.0
Formulare - Validierungen
 

Inhaltsverzeichnis

1. Validierungsmöglichkeiten
2. Parameter im Validierungsaufruf
3. Beispiel: Datumseingabe auf Volljährigkeit prüfen
4. Beispiel: Eingabe auf Buchstaben prüfen

 

Inhalt | Zurück | Vor

 

1. Validierungsmöglichkeiten

Eingabevalidierungen sind bei folgenden Elementen möglich:

Die Validierung erfolgt im Pop-Up-Modus direkt nach der Eingabe und dem Abspeichern der Daten. Eventuelle Validierungsfehler werden im Pop-Up-Eingabefeld angezeigt. Fehlerhaft validierte Eingaben werden nicht abgespeichert.

 

Abbildung 1 - Pop-Up-Eingabe mit Validierung

 

Abbildung 2 - Pop-Up-Eingabe mit Validierung (Fehlermeldung)

 

Im Pop-In-Modus erfolgt die Validierung ebenfalls direkt nach der Eingabe und dem Abspeichern der Daten. Fehlerhaft validierte Eingaben werden nicht abgespeichert.

 

Abbildung 3 - Pop-In-Eingabe mit Validierung

 

Abbildung 4 - Pop-In-Eingabe mit Validierung (Fehlermeldung)

 

Bei der Verwendung von Standard-Eingabefeldern werden alle Validierungen nach dem Abspeichern oder Abschicken durchgeführt und eventuelle Eingabefehler gesammelt in einem Pop-Up-Fenster ausgegeben. Fehlerhaft validierte Eingaben werden nicht abgespeichert.

 

Inhalt | Zurück | Vor

 

2. Parameter im Validierungsaufruf

Validierungsroutinen werden individuell als PL/SQL-Procedures programmiert und ihr Aufruf als Validate-Attribut unter den Element-Parametern eingetragen:

 

Abbildung 5 - Validate-Attribut im Text-Element

 

Der hier verwendete Aufruf lautet:

wt_my_form.validate_characters(
    i_form_container_id    => ${FORM_CONTAINER_ID},
    i_element_id           => ${ELEMENT_ID},
    i_value                => '${VALUE}',
    i_lang                 => '${LANG}')

In diesem Aufruf werden Parameter verwendet, die an die PL/SQL-Procedure weiter gegeben werden:

Die Parameter werden zur Laufzeit durch entsprechende Werte ersetzt die für den Ablauf der Validierungs-Procedure erforderlich sind.

Folgende Parameter können verwendet werden:

Die 'Anführungsstriche' bei einigen Parametern sind unbedingt erforderlich da es sich um Strings handelt. Wenn sie vergessen werden kommt es bei der Ausführung der Validierungs-Procedure zu Fehlern.

 

Inhalt | Zurück | Vor

 

3. Datumseingabe auf Volljährigkeit prüfen (Beispiel)

Das Beispiel zeigt, wie eine Texteingabe als Geburtsdatum interpretiert werden kann aus dem Rückschluss auf die (nicht-) Volljährigkeit gezogen wird.
 

PROCEDURE validate_volljaehrig (
    i_form_container_id IN NUMBER DEFAULT NULL,
    i_element_id IN NUMBER DEFAULT NULL,
    i_value IN VARCHAR2 DEFAULT NULL,
    i_format IN VARCHAR2 DEFAULT NULL
)
IS
    l_DOMDocument xmldom.DOMDocument;
    l_RootNode xmldom.DOMNode;
    l_RootElement xmldom.DOMElement;

    l_xml_data CLOB;
    l_date DATE;
    l_min_date DATE;
    l_date_konvertiert VARCHAR2(32);

BEGIN

    --------
    -- Formatvalidierung
    --------
    BEGIN

        l_date := TO_DATE(i_value, i_format);

    EXCEPTION
        WHEN OTHERS THEN
            raise_application_error(-20815, 'Fehler: Datum entspricht nicht dem Eingabeformat '||i_format);
    END;

    --------
    -- Datum fuer Altersgrenze bilden
    --------
    SELECT TO_DATE(TO_NUMBER(TO_CHAR(SYSDATE,'yyyy'))-18,'yyyy')
      INTO l_min_date
      FROM DUAL;

    --------
    -- Altersgrenze ueberpruefen
    --------
    IF l_date > l_min_date
    THEN
        BEGIN
        --------
        -- XML Quelltext holen
        --------
        SELECT xml_data
          INTO l_xml_data
          FROM wt_form_container
         WHERE form_container_id = i_form_container_id;

        --------
        -- XML Dokument initialisieren
        --------
        wt_form_api.init_xml (i_xml_data => l_xml_data,
            o_xml_domdocument => l_DOMDocument);

        -------
        -- Root finden
        -------
        l_RootElement := xmldom.getDocumentElement(l_DOMDocument);
        l_RootNode := xmldom.makeNode(l_RootElement);

        --------
        -- Datum konvertieren
        --------
        l_date_konvertiert := TO_CHAR(l_date, i_format);

        --------
        -- konvertiertes, ungueltiges Geburtsdatum wieder eintragen
        --------
        wt_form_api.set_element_value(
            i_form_container_id => i_form_container_id,
            i_element_id => i_element_id,
            i_value => l_date_konvertiert,
            i_DOMDocument => l_DOMDocument);

        --------
        -- XML-Dokument speichern
        --------
        wt_form_api.save_xml (i_DOMDocument => l_DOMDocument,
            i_form_container_id => i_form_container_id);

        --------
        -- Fehlercode erzeugen
        --------
        raise_application_error(-20815, 'Sie sind noch nicht volljährig!');
    END;

    ELSIF l_date > SYSDATE
    THEN
        --------
        -- Fehlercode erzeugen
        --------
        raise_application_error(-20815, 'Ungueltiges Datum.');
    END IF;

END; -- validate_volljaehrig
 

Für das Eingabefeld GEBURTSDATUM_text werden folgende Parameter gesetzt:

VALIDATE

wt_my_form.validate_volljaehrig(
    i_form_container_id    => ${FORM_CONTAINER_ID},
    i_element_id           => ${ELEMENT_ID},
    i_value                => '${VALUE}',
    i_format               => '${FORMAT}')

FORMAT

DD.MM.YYYY

 

Abbildung 6 - Parameter für Eingabefeld GEBURTSDATUM_text

 

Inhalt | Zurück | Vor

 

4. Eingabe auf Buchstaben prüfen (Beispiel)

Das Beispiel zeigt, wie eine Texteingabe auf das Vorhandensein nur von Buchstaben (keine Zahlen) überprüft werden kann (siehe Eingangsbeispiel unter Validierungsmöglichkeiten).


PROCEDURE validate_characters (
    i_form_container_id IN NUMBER DEFAULT NULL,
    i_element_id IN NUMBER DEFAULT NULL,
    i_value IN VARCHAR2 DEFAULT NULL,
    i_lang IN VARCHAR2 DEFAULT NULL
)
IS
BEGIN

    IF i_value <> TRANSLATE(i_value, '1234567890', ' ')
    THEN
       
        IF i_lang = 'de'
        THEN
            raise_application_error(-20815,'Die Eingabe enthaelt ungueltige Zeichen. Es sind nur Buchstaben erlaubt.');
        ELSE
            raise_application_error(-20815,'Die Eingabe enthaelt ungueltige Zeichen. Es sind nur Buchstaben erlaubt.');
        END IF;

    END IF;

END; -- validate_characters
 

Für das Eingabefeld p_text werden folgende Parameter gesetzt:

VALIDATE

wt_my_form.validate_characters(
    i_form_container_id    => ${FORM_CONTAINER_ID},
    i_element_id           => ${ELEMENT_ID},
    i_value                => '${VALUE}',
    i_lang                 => '${LANG}')

 

Inhalt | Zurück | Vor

 


WebAG Automat Dokumentation
Copyright
© Enterprise Web AG.
Alle Rechte vorbehalten.