ENcore un bug d^à une migration SQL 2000 à 2005 !!!

Résolu
white_mage Messages postés 47 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 25 février 2010 - 11 janv. 2007 à 15:43
white_mage Messages postés 47 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 25 février 2010 - 11 janv. 2007 à 17:22
Bonjour à tous !!!



Me revoilà avec un bug bien tordu dû à une migration SQL server 2000 à SQL server 2005.
L'application posant problème est un composant ActiveX programmé à l'aide de VB6.



Le composant fonctionne à merveille sous SQL server 2000 mais malheureusement pas tout le temps sous SQL server 2005.



Je m'explique....



J'ai une procédure stockée.
Le code ouvrait le recordSet de cette procédure de cette manière
 


strSQL = "sp_... "
 rsOP.Open strSQL, goCnn, adOpenStatic, adLockReadOnly






Avec cela, ça ne fonctionnait absolument pas sous SQL server 2005. J'avais cru avoir réussi à corriger le bug en ouvrant le recordset de cette mannière (et en contournant le problème)
 rsOP.Open strSQL, goCnn, adOpenStatic, adLockBatchOptimistic





Là, ça fonctionnait presque dans toutes les situations. Je dis presque car dans certain cas, rebelotte. AUcun recordset valide n'est retourné.



Attendez le pire !!! Dans un cas comme dans l'autre, si je place une messagebox avant l'ouverture du recordset (par exemple, de cette mannière:)


 strSQL = "sp_... "
 msgbox strSQL
 rsOP.Open strSQL, goCnn, adOpenStatic, adLockReadOnly




Le code fonctionne à tous les coups !!!! Cela prouve bien qu'il est correct !



J'ai essayé pas mal de choses...sans résultat.



Une aide afin de comprendre la cause serait vraiment la bienvenue !!
Merci !

White_Mage();

3 réponses

white_mage Messages postés 47 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 25 février 2010
11 janv. 2007 à 17:19
Une solution comme je les aime (aussi tordue que le problème)....

Après avoir cherché un moment, j'ai réussi à détérminer que ça n'était pas cette procédure qui posait problème mais celle qui était appelée juste après !!
L'erreur était "Incorrect syntax near 'END'" Une erreur classique SQL.

Le fait étrange est que lorsque j'appel la sp avec les même paramètre depuis SQL Manager. Elle passe sans aucun soucis....
Après réflexion, j'ai ajouté un deuxième saut de ligne entre la dernière instruction (un order by) et le END

ORDER

BY dbo
.tblAttribuerOption
.OrdreAffichage

END

Comme cela

ORDER

BY dbo
.tblAttribuerOption
.OrdreAffichage
END

Et maintenant, ça fonctionne à merveille !!! Vive MS !!
Et une après-midi de perdue....une !

Le plus étrange était quand-même le fait que si je mettait un msgbox au début de la fonction....le code fonctionnait a merveille ?!?!?!?!?....Je crois que je ne vais pas chercher à comprendre....

Voila.... A+++

White_Mage();
3
white_mage Messages postés 47 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 25 février 2010
11 janv. 2007 à 17:21
Oups...le code est mal repri...COmme ça, c'est correct

ORDER BY dbo.tblAttribuerOption.OrdreAffichage

END

...

ORDER BY dbo.tblAttribuerOption.OrdreAffichage
END

White_Mage();
0
white_mage Messages postés 47 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 25 février 2010
11 janv. 2007 à 17:22
Bon...j'arrive pas à formater correctement le code....mais on se comprend....

White_Mage();
0
Rejoignez-nous