IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Forms Oracle Discussion :

Problème de date sous forms 10 et base oracle 10


Sujet :

Forms Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 50
    Points : 21
    Points
    21
    Par défaut Problème de date sous forms 10 et base oracle 10
    Bonjour,
    Je recupère certaines informations et entre autres des dates de naissance, embauche, ... via un package que j'ai créé. En affichant les variables, je recupère bien ce qu'il faut mais le contenu n'est plus le même après insertion dans la base.
    Par exemple, je recupère 03/12/1963 dans ma base et sur l'écran forms j'ai bien 03/12/1963. Par contre si c'est 06/07/1920 je me retrouve avec 06/07/2220.
    En somme pour des dates antérieures à 1950 par exemple les deux premiers chiffres sont remplacés par 2 et 0 soit 2050 au lieu de 1950.
    J'aurai par exemple 2035 insérré à la place de 1935 alors que j'ai bien récupéré 1935.
    Des pistes?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function verifier_date (p_valeur in varchar2, p_format in varchar2) return varchar2 is
    --Vérifier la validité d'une date par rapport à un format Si OK renvoyer date 
    --Sinon null avec p_format = YYYY-MM-DD
    v_valeur date;
    begin
        select to_date(p_valeur,p_format)
        into v_valeur
        from dual;
     return v_valeur;
    exception
     when others then
        return null;
    end verifier_date;
    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    c'est l'exemple type des dates insérées avec le format d'année sur 2 caractères seulement ('YY'). Il faut proscrire cette méthode et utiliser soit RR soit YYYY
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  3. #3
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    1/ Eviter les SELECT from dual inutiles (ça fait des aller-retour moteur sql-base)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    FUNCTION verifier_date (p_valeur IN varchar2, p_format IN varchar2) RETURN varchar2 IS
    --Vérifier la validité d'une date par rapport à un format Si OK renvoyer date 
    --Sinon null avec p_format = YYYY-MM-DD
    v_valeur date;
    begin
        v_valeur := to_date(p_valeur,p_format);
     RETURN v_valeur;
    exception
     when others then
        RETURN NULL;
    end verifier_date;
    Sinon le problème vient de là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RETURN varchar2
    v_valeur := to_date
    Il faut renvoyer une date, pas un varchar2

    Ensuite sous Forms, quel est le format ?
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 50
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par SheikYerbouti Voir le message
    c'est l'exemple type des dates insérées avec le format d'année sur 2 caractères seulement ('YY'). Il faut proscrire cette méthode et utiliser soit RR soit YYYY
    Je n'ai pas compris votre remarque. Remplacer YYYY par RRRR?

    Mon problème vient de cette fonction.
    J'ai testé :
    v_val := replace(p_valeur,'-','');
    v_valeur := to_date(v_val,p_format);
    avec p_format = 'YYYYMMDD' ça n'a rien changé.

    Ensuite, j'ai remplacé - par / et pour p_format 'YYYY/MM/DD' idem.
    J'ai constaté qu'il manque toujours les deux premiers chiffres de l'années.

    Au dessus de 1950 j'ai des bonnes valeurs mais en dessous j'ai des problèmes : 12/12/1932 devient 12/12/2032.

    Cependant sous SQLPlus par exemple, je n'ai aucun problème tout à l'air de bien fonctionner mais quand je fais mes appels sous forms 10 (écran), je me retrouve avec des données érronnées pour des dates antérieures à 1950 par exemple.
    Vais tester le cas où la fonction renvoie une date pour voir également.
    Merci.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 50
    Points : 21
    Points
    21
    Par défaut
    RETURN DATE
    C'est moi qui me suis planté.
    Merci à tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de menu sous forms 10g
    Par ilboudfr dans le forum Forms
    Réponses: 2
    Dernier message: 07/05/2010, 13h08
  2. Problème de date avec Coldfusion sur une base Oracle
    Par HappyTreeFred dans le forum Coldfusion
    Réponses: 7
    Dernier message: 13/02/2009, 08h33
  3. [requête] récupérer la date sous forme de chiffre
    Par celiaaa dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 19/12/2006, 16h25
  4. Réponses: 5
    Dernier message: 08/03/2006, 15h22
  5. [MySQL] Problème d'affichage sous forme de tableau
    Par mogway95 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 01/03/2006, 16h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo