"Erreur d'exécution '-2147217887 (80040e21)' : Une opération en plusieurs étapes

mercureVB Messages postés 1 Date d'inscription vendredi 6 mars 2009 Statut Membre Dernière intervention 6 mars 2009 - 6 mars 2009 à 17:49
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 6 mars 2009 à 18:44
Bonjour,

dans une application en VB6 reliée à une base Oracle via une connexion ADO, je déclare un recordset de la manière suivante :




Dim vRs As ADODB.Recordset
Dim vSQLTmp As String





qui va exécuter la requête suivante :





 vSQLTmp =
"SELECT ANE_AN, ANE_COD, ANP_COD, ANS_COD,
COUNT(ANS_COD) OVER(PARTITION BY ANE_AN, ANE_COD, ANP_COD) AS NBSEQ,
SSQ_FLG, SQ_FLG
FROM W_ANIM_CDE_FR"

J'ouvre un recordset qui exécute la requête ci dessus dont les propriétés sont :

CursorLocation=adUseClient, CursorType=adOpenStatic, LockType=adLockBatchOptimistic

J'exécute par la suite le bloc de code suivant :

Do Until vRs.EOF
[...]




vRs!SSQ_FLG = "1"



[...]
Loop




vRs.close
vRs.UpdateBatch


End Sub




Quand on arrive sur l'instruction d'affectation vRs!SSQ_FLG = "1", l'erreur suivante se produit :


Erreur d'exécution '-2147217887 (80040e21)' :
Une opération en plusieurs étapes a généré des erreurs. Vérifier chaque valeur d'état.






Le champ SSQ_FLG est de type varchar2 d'une taille de 1 octet.




Lorsque je passe par une requête UPDATE pour mettre à jour SSQ_FLG, ça marche, mais du coup je perds l'avantage de la mise à jour par lot du UpdateBatch( ).

Serait ce à cause de la fonction d'aggrégation SELECT COUNT( ) propre à ORACLE, ou bien à cause du paramétrage de mon recordset ?

Une aide de votre part serait la bienvenue



Merci

1 réponse

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 mars 2009 à 18:44
tu as bien mis un appel à la méthode Update de ton Recordset ?
0
Rejoignez-nous