Système exploitation : Window 2000 pro.
problème de compatibilité ADO entre VB 6 et VB NET
Le problème est le suivant :
Nous developpons sous VB 6 (SP5) avec la base oracle 8.i ( Version 8.1.7.0) grâce à ADO 2.5. Depuis que nous avons installé VB NET, un problème MAJEUR est apparu sur l'ensemble de nos applications VB 6 déjà en exploitation depuis plusieurs mois.
Le bug se produit dans le cas suivant : appel d'une procédure stocké oracle qui retourne une valeur. Depuis l'installation de VB NET les valeurs retournées sont
systématiquement la chaîne "???" ou "".
Le code qui suit est correct et qui fonctionne depuis plusieurs mois, aucune modification logiciel ou matériel n'a eu lieu sur nos poste de développement. Il est juste présenté afin que
vous puissiez identifié l'emplacement du problème. La question ici n'est pas de debuger mon exemple mais bien de comprendre pourquoi le paramétre de sortie de la
procédure stocké me retourne désormais "???".
Sous VB6
...
Dim cpw1 As ADODB.Command
Set cpw1 = New ADODB.Command
cpw1.ActiveConnection = Cnx
cpw1.CommandText = "Compta_transfert.V2_ALIMENTE_CPTA_TEMPORAIRE"
cpw1.CommandType = adCmdStoredProc
'Paramètres d'intrée
cpw1.Parameters.Append cpw1.CreateParameter(, adBSTR, adParamInput)
cpw1(0) = GLB_Societe
cpw1.Parameters.Append cpw1.CreateParameter(, adBSTR, adParamInput)
cpw1(1) = GLB_Utilisateur
cpw1.Parameters.Append cpw1.CreateParameter(, adInteger, adParamInput)
cpw1(2) = CLng(GLB_Societe)
ECT....
'Paramètre de sortie
cpw1.Parameters.Append cpw1.CreateParameter(, adBSTR, adParamOutput)
'EXECUTION
Set rs = cpw1.Execute
If cpw1(16).Value <> "ER" Then
Ect...
la valeur retournée pour cpw1(16) est "???"
(Note : le code fonctionne correctement.)
Sous ORACLE
CREATE OR REPLACE PROCEDURE "V2_ALIMENTE_CPTA_TEMPORAIRE"(
N_soc_Alpha IN VARCHAR2,
N_user IN VARCHAR2,
N_soc_number IN NUMBER,
ECT...
Retour OUT VARCHAR2 --Retourne l'ecriture créée (OK ou ER)
) IS
(Note : la procédure stockée fonctionne correctement.)
J'ai essayé de réinstaller VB 6. Aprés réinstallation le problème persiste encore.
Il parait évident que le problème provient de l'installation de VB NET qui a du mettre à jour les fichier ADO du répertoire "C:\Program Files\Fichiers communs\System\ado".
En effet, nous avons 3 postes de développement identiques avec VB 6. Sur 2 d'entre eux VB NET a été installé. Finallement le seul poste qui permet de récupérer
le paramétre de retour est celui ou VB NET n'a pas été installé.
Il est evidement exlu de désinstaller VB NET pour voir si le problème se règle car la coéxistance des 2 outils (VB 6 et VB NET) sur un même poste de développement
semble évident et cette solution n'apporterait donc aucune réponse satisfaisante au problème.
je vous remercie d'avance..
benoit guihal