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

Bases de données Delphi Discussion :

Delphi Et Oracle Ora-01722


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Août 2003
    Messages : 100
    Par défaut Delphi Et Oracle Ora-01722
    Salut,
    je developpee une appli ous DELPHI 7 avec comme base de données sous ORACLE 9.2i.
    J'ai defini un chanmp de float dans une
    de mes tables (mont_reglement float(10)).
    Quand j'essaie d'envoyer des valeurs numeriques dans ce champ j'ai l'erreur suivante :
    ORA-01722 nombre invalide.

    Voici un exemple de code qui renvoit l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
          ClientDataSet.Open;
                   ClientDataSet.Insert;
                   ClientDataSet.FieldByName('REF_REGLEMENT').AsString:=TREGLEMENT.FieldByName('RG_NO').AsString;
                   ClientDataSet.FieldByName('REF_JOURNAL').AsString:=TREGLEMENT.FieldByName('JO_NUM').AsString;
                   ClientDataSet.FieldByName('REF_TIERS').AsString:=TREGLEMENT.FieldByName('CT_NUMPAYEUR').AsString;
                   ClientDataSet.FieldByName('MONT_REGLEMENT').AsFloat:=TREGLEMENT.FieldByName('RG_MONTANT').AsFloat;
     
                   ClientDataSet.ApplyUpdates(0);
    Merci de m'aider

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Essaie comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ClientDataSet.FieldByName('MONT_REGLEMENT').AsString:= FormatFloat('0.00',TREGLEMENT.FieldByName('RG_MONTANT').AsFloat);
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre confirmé
    Inscrit en
    Août 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Août 2003
    Messages : 100
    Par défaut
    Je suis desole Malatar ca fonctionne pas ,j'ai toujours la meme erreur.
    Merci de m'aider.

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    A la palce du . dans le FormatFloat met une , pour tester
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut,

    Personellement je conserverais le point ( . ) pour le FormatFloat, mais je le ferais précéder par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      DecimalSeparator := '.';
    En le restaurant à son état initial si nécessaire.
    @+

  6. #6
    Membre confirmé
    Inscrit en
    Août 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Août 2003
    Messages : 100
    Par défaut
    Aussi bien la solution de Malatar et Claudius40 ne marche pas.
    je sais pas trop comment faire maintenant.
    Y a pas une autre piste.
    merci de m'aider.,

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Tu peux fournir la structure complète de la table (pas que le champ réglement), car autant c'est un des autres champs qui retourne l'erreur.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  8. #8
    Membre confirmé
    Inscrit en
    Août 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Août 2003
    Messages : 100
    Par défaut
    Voici la structure de ma table reglement obtenu avec la commande describe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    SQL> describe reglement;
     Nom                                       NULL ?   Type
     ----------------------------------------- -------- ---------------------------
     REF_REGLEMENT                             NOT NULL VARCHAR2(20)
     REF_JOURNAL                                        VARCHAR2(15)
     MONT_REGLEMENT                                     FLOAT(10)
     DATE_REGLEMENT                                     DATE
     SENS                                               VARCHAR2(14)
     MODE_REGLEMENT                                     VARCHAR2(9)
     NUM_CHEQUE                                         VARCHAR2(30)
     BANQUE_TIERS                                       VARCHAR2(30)
     BANQUE_REMISE                                      VARCHAR2(30)
     BANQUE_EMETTEUR                                    VARCHAR2(30)
     REF_FACTURE                                        VARCHAR2(20)
     DATE_OPERATION                                     DATE
     REF_TIERS                                          VARCHAR2(8)

  9. #9
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Juste comme çà, il faut pas fair eun post avant le applyupdates ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ClientDataSet.Post;
    ClientDataSet.ApplyUpdates(0);
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  10. #10
    Membre confirmé
    Inscrit en
    Août 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Août 2003
    Messages : 100
    Par défaut
    Malatar,j'ai pas compris votre derniere reponse car dans mon code je n'ai pas fait du post avant applyupadtes ou c'est ce que tu me suggeres comme code pour resoudre mon problème.
    Merci de m'apporter les eclaircissements sur ton dernier post.

  11. #11
    Membre averti
    Inscrit en
    Mars 2002
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 14
    Par défaut
    La réponse à ta question réside dans :
    'ALTER SESSION SET NLS_NUMERIC_CHARACTERS=''.,'''

    que tu peux ajouter pour que oracle accepte les décimales françaises .


    créez l'événement OnAfterConnect, et placez-y l'instruction
    SqlConnection1.ExecuteDirect(
    'ALTER SESSION SET NLS_NUMERIC_CHARACTERS=''.,''');

    plus de détail sur http://www.jcolibri.com/articles/bdd..._tutorial.html

    ciao

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/05/2012, 16h09
  2. Migration base Oracle 9 vers Oracle 10G - Microsoft Query retourne ORA-01722
    Par coyote90 dans le forum Interfaces de programmation
    Réponses: 0
    Dernier message: 14/05/2012, 15h54
  3. [Delphi 2005/Oracle/ADO]Taille de champ incorrecte
    Par Frank dans le forum Bases de données
    Réponses: 20
    Dernier message: 15/04/2005, 14h12
  4. Oracle ORA-00020 : maximum de processus
    Par Lisou dans le forum Administration
    Réponses: 5
    Dernier message: 22/03/2004, 16h27
  5. Installation d'une appli en delphi, utilisant Oracle
    Par nilna972 dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/11/2003, 13h12

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