Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
je viens de récupérer un programme qui dans le code, insère grâce à une requête en powerscript ,une ligne sur une table d'une base Oracle.
Rien de sorcier jusque la. Mon souci intervient sur 2 champs de cette table car ils s'agit de numéric(9,2) dans la table et de décimaux dans le code.
Une erreur Oracle m'est rétournée, indiquant qu'il ne peut insérer ces nombres. ("ORA-01722 : Nombre non valide")
Le pb vient probablement du spéparateur des entiers avec les décimaux ( une ',' dans Oracle et un '.' en powerscript)
Des solutions?
Hors ligne
Salut, je me suis déjà et avec cette histoire de . et , sous Oracle...
pas de solution miracle, en fait il y a pas mal de paramètres :
* langue et paramètres régionaux de l'os du serveur oracle
* langue et paramètres régionaux de la base oracle (généraux ou de session)
* langue et paramètres régionaux de l'os du PC client
* langue et paramètres du client Oracle du PC client
* PB (sqlca.parm,...)
en principe, si c'est possible, il faut s'arranger pour ne rien toucher à la config serveur...
regarde ici pour plus d'infos
Hors ligne
ah oui éternel problème :|
Hors ligne
ta base oracle est toujours configurée en "," pour les decimaux ?
Hors ligne
eRaSorZ a écrit:
Salut, je me suis déjà et avec cette histoire de . et , sous Oracle...
pas de solution miracle, en fait il y a pas mal de paramètres :
* langue et paramètres régionaux de l'os du serveur oracle
* langue et paramètres régionaux de la base oracle (généraux ou de session)
* langue et paramètres régionaux de l'os du PC client
* PB...
en principe, si c'est possible, il faut s'arranger pour ne rien toucher à la config serveur...
regarde ici pour plus d'infos
Il serait effectivement préférable de ne pas toucher à la config du serveur.
J'ai changé mes parametres locaux : ',' à la place de '.' sur mon poste. Mes décimaux sont désormais affichés comme 'XX,XX' quand je passe l'appli au debuger. Mais toujours la même erreur.
pick ouic a écrit:
ta base oracle est toujours configurée en "," pour les decimaux ?
Commen ca toujours?
Hors ligne
euh rien...
sinon, tu passes par des procédures stockées ? au niveau des enregistrements ?
si oui, tu passes le decimal en Varchar ( tout en mettant la virgule à la place du point) , et depuis ta proc, tu reconvertis en numerique.
Hors ligne
pick ouic a écrit:
euh rien...
sinon, tu passes par des procédures stockées ? au niveau des enregistrements ?
si oui, tu passes le decimal en Varchar ( tout en mettant la virgule à la place du point) , et depuis ta proc, tu reconvertis en numerique.
Pas du tout.
Comme je l'ai di, il y a un INSERT INTO ma Table (...) Values(...) en dur dans le code powerscript de la fenêtre.
Hors ligne
mial a écrit:
pick ouic a écrit:
euh rien...
sinon, tu passes par des procédures stockées ? au niveau des enregistrements ?
si oui, tu passes le decimal en Varchar ( tout en mettant la virgule à la place du point) , et depuis ta proc, tu reconvertis en numerique.Pas du tout.
Comme je l'ai di, il y a un INSERT INTO ma Table (...) Values(...) en dur dans le code powerscript de la fenêtre.
donc, tu peux faire dans le insert into...
un convert(numerique (ou quelque chose comme ca, par rapport à oracle), ls_valeur)
Hors ligne
ça donne quoi quand tu fais
INSERT INTO ma Table ( champ_decimal, ... ) Values( to_number( :ic_valeur), ...)
Hors ligne
Parfait!
Je convertis en String mon decimal puis appel à la fonction To_NUMBER(... , ...) dans ma requete.
Merci pour tout.
PB RESOLU
Hors ligne
Ton nombre décimal en PB comment l'as-tu déclaré ?
Essayes la deuxième :
decimal ld_toto1 decimal{2} ld_toto2
N'oublies pas non plus le paramètre "DecimalSeparator" du DbParm :
SQLCA.DBParm = "DecimalSeparator='.'"
Hors ligne
Bonjour à Tous
Petit Conseil
Lors de l'installation OracleClient en local laisser comme langue AMERICA.
Eviter de mettre FRENCH.
Hors ligne
SQLCA.DBParm = "DecimalSeparator='.'"
La meilleure solution pour l'instant.
Hors ligne