Quoi, tu ne connais pas PB ? Va falloir parcourir tout le forum alors !

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 01-04-2020 17:48:58

GuiguixX  
Membre Geek
Date d'inscription: 16-11-2015
Messages: 23
Pépites: 132
Banque: 0

CommitTran() fonctionne différemment entre 32bits et 64bits

Bonjour la commu,

Voila je rencontre un problème je suis entrant de faire le portage des sources de mon projet PB10.5 vers PB2017-R2.
En plus de ce portage je fais un passage de source 32bits en 64bits.

C'est là que j'ai un problème sur un écran je fais un dw_1.update() suivi d'un sqlca.committran() et tout se passe bien super. (dans tous les cas je teste le sqlca.sqlcode du update et il est OK)
Par contre quand je fais la même action (via un bouton) sur mon environnement 64bits au moment du sqlca.committran() j'ai 2 messages d'erreur :

1- le premier reprend la requête du datastore qui va être commit (OK)
2- le second m'indique ceci :
Erreur de mise à jour sur 999
Select Error: Decimal conversion error. PowerBuilder supports only 18 decimal digits


Quand sur mon 64bits je consulte mon écran pour vérifier la sauvegarde de mes données et leurs mises à jour ça fonctionne (excepté ce foutu message d'erreur).

Le code est strictement le même. Pour infos dans cette datawindow le champs que je soupçonne être la cause est un NUMERIC(16,2) qui est géré dans un Decimal cette colonne stocke un montant qui suit la règle suivante : quantité * prix unitaire

Mes configurations projets sont les suivantes :
- 32bits :
|-- J'ai une chaîne de connexion ODBC 32bits qui va taper un schéma de BDD sur un serveur DB2/AS400

- 64bits :
|-- J'ai une chaîne de connexion ODBC 64bits qui va taper un schéma de BDD sur un serveur DB2/AS400

(Dans les 2 cas le schéma de BDD est le même entre l'application 32bits et 64bits).
Je patauge depuis hier soir si quelqu'un à une idée, je suis preneur

En vous remerciant

Hors ligne

 

#2 02-04-2020 09:01:48

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: CommitTran() fonctionne différemment entre 32bits et 64bits

Bonjour,

C'est quoi le type de la colonne dans la DW ? (edit source)


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 02-04-2020 09:17:23

GuiguixX  
Membre Geek
Date d'inscription: 16-11-2015
Messages: 23
Pépites: 132
Banque: 0

Re: CommitTran() fonctionne différemment entre 32bits et 64bits

Bonjour,

C'est un decimal(2) :

Code:

column=(type=decimal(2) update=yes updatewhereclause=yes name=ecimtglobal dbname="ENTCIP.ECIMTGLOBAL")

Hors ligne

 

#4 02-04-2020 13:36:26

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: CommitTran() fonctionne différemment entre 32bits et 64bits

Bon, je ne connais pas DB2, mais je pense que tu peux résoudre ça en creusant un peu sur la déclaration de ta colonne.
Sinon au pire, vu que la màj semble fonctionner, essaye de mettre ça dans un TRY CATCH, au moins y'aura plus le message (c'est sale, mais bon, c'est PB...)


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#5 02-04-2020 22:13:33

GuiguixX  
Membre Geek
Date d'inscription: 16-11-2015
Messages: 23
Pépites: 132
Banque: 0

Re: CommitTran() fonctionne différemment entre 32bits et 64bits

Ce qui est bizarre c'est que si le montant dans ma colonne est inférieur à 1000 ça passe dès que je passe sur 4 digit avant le séparateur j'ai le message d'erreur... Trop bizarre
J'ai essayé d'englober dans le tout dans un try catch mais impossible de chopper le message d'erreur, quel est le type d'exception du committran() ?

Si quelqu'un a des idées à tester je prends car la je tourne en rond et ça me saoule...

Hors ligne

 

#6 03-04-2020 09:54:08

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: CommitTran() fonctionne différemment entre 32bits et 64bits

A tout hasard, ça donne quoi avec :

Code: pb

COMMIT USING SQLCA ;


au lieu de :

Code: pb

sqlca.committran()

N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#7 03-04-2020 15:07:57

GuiguixX  
Membre Geek
Date d'inscription: 16-11-2015
Messages: 23
Pépites: 132
Banque: 0

Re: CommitTran() fonctionne différemment entre 32bits et 64bits

Ça me fait la même chose entre les 2 commit...

Hors ligne

 

#8 22-04-2020 09:20:47

GuiguixX  
Membre Geek
Date d'inscription: 16-11-2015
Messages: 23
Pépites: 132
Banque: 0

Re: CommitTran() fonctionne différemment entre 32bits et 64bits

Bonjour,

J'ai une question subsidiaire :

J'ai des champs dans mon datastore qui sont défini en Decimal avec 0 en précision (donc pas de chiffre après la virgule).
Dans ma BDD je retrouve aussi des colonnes (les mêmes) qui sont définies en DEC(XX,0).

Je ne pense pas que ça vienne de là car le message est explique il fait un cast en DECIMAL d'une valeur mais est-ce que ça peut être une piste viable de recherche ?

Pour infos :
L'applicatif est en 64bits sur un Windows Server 2016 64bits
Les BDD se trouvent sur un serveur DB2/AS400
Les connexions entre l'application et les BDD se font en ODBC 64bits

Hors ligne

 

#9 22-04-2020 13:51:21

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: CommitTran() fonctionne différemment entre 32bits et 64bits

Bonjour,

Je ne connais pas DB2. De mémoire, j'ai déjà du rencontrer ce problème sur d'autres bases. Je pense que cela peut provenir du paramétrage du format numérique de la connexion ODBC :

http://infocenter.sybase.com/help/index … JBACJI.htm

Il y a pas mal de choses spécifiques à DB2 concernant le format numérique.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22