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 :
qui va exécuter la requête suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim vRs As ADODB.Recordset Dim vSQLTmp As String
J'ouvre un recordset qui exécute la requête ci dessus dont les propriétés sont :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 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'exécute par la suite le bloc de code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CursorLocation=adUseClient, CursorType=adOpenStatic, LockType=adLockBatchOptimistic
Quand on arrive sur l'instruction d'affectation vRs!SSQ_FLG = "1", l'erreur suivante se produit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Do Until vRs.EOF [...] vRs!SSQ_FLG = "1" [...] Loop vRs.close vRs.UpdateBatch End Sub
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
Partager