Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Discussion fermée
Bonjour à tous.
J'ai une application écrite sous PowerBuilder 6.5.1, connectée à un client
Oracle 7.3.4 et géré par Windows NT4 SP6. Ce poste se connecte à un serveur
Windows NT4 Server SP6 sur lequel existe une base de données Oracle Server
7.3.4.
J'ai migré cette application sous PowerBuilder 10.2.1, se connectant au même
serveur (Windows NT4 Server SP6, Oracle Server 7.3.4) par le biais d'un client
Oracle8i (8.1.7).
La migration du code PowerBuilder en soit a subi quelques modifications
mineures. Cependant, l'accès d'un client Oracle8i à un serveur Oracle 7.3.4
semble poser des problèmes. En effet, dans des cas bien spécifique, j'obtiens
les erreurs ORA-01438, ORA-01722 et ORA-24374.
D'après le site www.ora-code.com, voici la description de chacune de ces
erreurs :
ORA-01438: value larger than specified precision allows for this column Cause: When inserting or updating records, a numeric value was entered that exceeded the precision defined for the column. Action: Enter a value that complies with the numeric column's precision, or use the MODIFY option with the ALTER TABLE command to expand the precision.
ORA-01722: invalid number Cause: The attempted conversion of a character string to a number failed because the character string was not a valid numeric literal. Only numeric fields or character fields containing numeric data may be used in arithmetic functions or expressions. Only numeric fields may be added to or subtracted from dates. Action: Check the character strings in the function or expression. Check that they contain only numbers, a sign, a decimal point, and the character "E" or "e" and retry the operation.
ORA-24374: define not done before fetch or execute and fetch Cause: The application did not define output variables for data being fetched before issuing a fetch call or invoking a fetch by specifying a non-zero row count in an execute call. Action: Issue OCI define calls for the columns to be fetched.
Pour être bien clair :
Serveur :
OS : Windows NT4 Server SP6
Base de données : Oracle Server 7.3.4
Client 1 : Totalement fonctionnel
OS : Windows NT4 Workstation SP6
Base de données : Oracle 7.3.4 (client)
Source du logiciel : PowerBuilder 6.5.1 build 444
Client 2 : Partiellement fonctionnel
OS : Windows XP SP2
Base de données : Oracle8i (8.1.7) (client)
Source du logiciel : PowerBuilder 10.2.1 build 9597
Le client 2 pose problème car sur certains cas bien spécifiques, le poste
produit une des trois erreurs Oracle énoncé ci-dessus, de même que des
"Null object reference".
Dans le source, je n'ai fait que les corrections exigées par la migration.
Par ailleurs, sur le client 1, j'ai installé Oracle8i (client) et par le biais du
"Home selector", j'ai indiqué que je souhaitais travailler avec le client Oracle8i.
J'ai refait mon test et je n'ai eut aucune des erreurs énoncées. En outre, je
tiens à préciser que sur mon client 1, le driver ODBC Oracle est d'Intersolv,
tandis que sur mon client 2, c'est celui d'Oracle.
Enfin, j'ai tenté d'installer Oracle 7.3.4 (client) sur le client 2, mais ce dernier
n'est pas compatible avec Windows XP SP2.
J'espère avoir été suffisament clair.
Toute aide ou piste sont les bienvenues !
Par avance, merci !
Hors ligne
une question...
est ce que la version de ton appli PB6 fonctionne avec ta base Oracle8i (8.1.7) ?
est ce que la version de ton appli PB10 fonctionne avec ta base Oracle 7 ?
Hors ligne
est ce que la version de ton appli PB6 fonctionne avec ta base Oracle8i (8.1.7) ?
Oui, mon application en PB6 fonctionne avec la base Oracle8i (je l'ai testé sur le client
1)
est ce que la version de ton appli PB10 fonctionne avec ta base Oracle 7 ?
J'ai testé ce cas de figure, mais l'appli ne peut s'exécuter, je m'explique :
- sur le client 1 (Windows NT4 Workstation SP6), l'appli en PB10 ne fonctionne pas, car
PB10 fait appel à des fonctions inclus dans les DLLs qui n'existait pas encore sur
Windows NT4 (mais qui existe déjà sur Windows XP et probablement sur Windows
2000). Voici le message d'erreur que j'obtiens :
- sur le client 2 (Windows XP SP2), je n'ai pu installer le client Oracle 7, car cette
version n'est pas compatible avec Windows XP.
En définitive, on peut dire que je n'ai pas encore eut la possibilité de bien tester sur
PB10, car ou bien je ne peux pas tester (les cas ci-dessus) ou alors j'obtiens les
messages d'erreurs enoncé dans le premier message.
Merci de ton aide Pick Ouick !
Hors ligne
donc le probleme proviendrait de PB10 ?
enfin, au niveau de la DLL Oracle ? ou du syntaxe ?
tu me diras, ca m'interesse...car il se pourrait que nous rencontrions les memes problemes
Hors ligne
pick ouic a écrit:
donc le probleme proviendrait de PB10 ?
enfin, au niveau de la DLL Oracle ? ou du syntaxe ?
tu me diras, ca m'interesse...car il se pourrait que nous rencontrions les memes problemes
Je pense que c'est un peu plus "vicieu" que ça : le problème proviendrait de l'accès à
Oracle sous PB10 pour certaines des fonctionnalités disponibles dans l'application :
je pense que la manière dont se connecte PB10 à Oracle est pourri (sur mon client 1,
PB6.5 attaquait Oracle par le biais d'un driver Intersolv ...).
L'installation d'un autre driver pourrait peut être solutionné le problème.
Je continu d'investiguer !
Hors ligne
Bonjour à tous !
Je viens confirmer que le problème provenait du driver d'accès à la base de données.
En effet, j'utilisais le driver ODBC d'Oracle (fichier : SQORA32.DLL du 23/10/2003) et
j'avais les problèmes énoncés ci-dessus.
J'ai alors tenté d'accéder à ma base via le driver ODBC Oracle installé par PowerBuilder,
soit PB DIRECT OEM 4.20 Oracle (fichier : PBOR819:DLL du 08/03/2006) et cela a
fonctionné : je n'ai plus les erreurs que j'avais identifié. Je dois effectivement faire des
tests plus poussés, mais je pense que le problème est résolu car j'avais systématiquement
les mêmes erreurs.
Mon souci est maintenant de trouver un driver ODBC d'accès à la base de données
Oracle8i qui puisse être facilement déployé, sans utiliser celui de PowerBuilder (qui
n'est installé que sur les postes de développement).
Merci.
Hors ligne
Solution apporté dans ce topic.
Topic clos.
Hors ligne
Discussion fermée
Pages: 1