Personne ne maitrise "UPDATE" d'ADO ?
ruth
-
Larbi -
Larbi -
Bonjour à tous!!
SVP je me permets de vous reponser mon probleme;
svp je fais un update sur un objet ADODB.recordset sur vb6 (pour modifier les valeurs contenues dans une colonne ,les diviser par 3 ).
J'obtient comme erreur:
"Row cannot be located for updating. Some values may have been changed since it was last read". erreur numero -2147217864
au moment ou je fais un movenext (pr modifier la ligne suivante)!!
SVP voyez vous ou il ya probleme?
merci!!
SVP je me permets de vous reponser mon probleme;
svp je fais un update sur un objet ADODB.recordset sur vb6 (pour modifier les valeurs contenues dans une colonne ,les diviser par 3 ).
J'obtient comme erreur:
"Row cannot be located for updating. Some values may have been changed since it was last read". erreur numero -2147217864
au moment ou je fais un movenext (pr modifier la ligne suivante)!!
SVP voyez vous ou il ya probleme?
merci!!
A voir également:
- Personne ne maitrise "UPDATE" d'ADO ?
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Windows update windows 10 - Guide
- Wsus offline update - Télécharger - Systèmes d'exploitation
8 réponses
Salut,
ben a priori, tes valeurs ont été modifiées entre le temps où tu les as lues et celui où tu veux les récrire... Peut-être même qu'elles n'existent plus...
c'est quoi comme base ?
elle est multi-user ?
y'a pas des sessions/transactions du genre rollback, commit ?
A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
ben a priori, tes valeurs ont été modifiées entre le temps où tu les as lues et celui où tu veux les récrire... Peut-être même qu'elles n'existent plus...
c'est quoi comme base ?
elle est multi-user ?
y'a pas des sessions/transactions du genre rollback, commit ?
A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Salut!
C'est une base oracle 8 ;elle n'est pas multi user!
il n'y'a pas des sessions/transactions du genre rollback, commit !!
meme en faisant un requery sur mon recorset pr rafraichissement ,le meme probleme se pose;
bien sur je peux executer une requete du gere "UPDATE...." sur chacune des 10 0000 lignes de ma table pr mettre à jour une colonne ,mais cette opération prendrait beaucout plus de temps...
voila pourqoui je souhaite faire une seule connection en ouvrant un rst et en utilisant update!
Merci
C'est une base oracle 8 ;elle n'est pas multi user!
il n'y'a pas des sessions/transactions du genre rollback, commit !!
meme en faisant un requery sur mon recorset pr rafraichissement ,le meme probleme se pose;
bien sur je peux executer une requete du gere "UPDATE...." sur chacune des 10 0000 lignes de ma table pr mettre à jour une colonne ,mais cette opération prendrait beaucout plus de temps...
voila pourqoui je souhaite faire une seule connection en ouvrant un rst et en utilisant update!
Merci
euh si je puis me permettre, un UPDATE en SQL durerait moins longtemps, puisque dans ce cas, il envoie le SQL à ORACLE qui lance une seule requête, alors que dans le cas d'un recordset avec movenext, il y a autant d'envois de modifs que de movenext.
et on dira ce qu'on voudra, ORACLE va verouiller la table/ligne avant de faire la mise à jour puis libérer si OK et ça 10000 fois s'il le faut... alors qu'avec UPDATE en SQL, il va verrouiller une seule fois et faire son commit à la fin...
mais bon, c'est juste mon avis... :-)
A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
et on dira ce qu'on voudra, ORACLE va verouiller la table/ligne avant de faire la mise à jour puis libérer si OK et ça 10000 fois s'il le faut... alors qu'avec UPDATE en SQL, il va verrouiller une seule fois et faire son commit à la fin...
mais bon, c'est juste mon avis... :-)
A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Salut ruth,
Je suis d'accord avec Blux.
Néanmoins pour répondre à ta question, l'idée est que tu dois "rafraichir" les données de ton recordset.
ex :
"Private Sub SaveMailing()
rst1.Fields("MailingSourceHtml") = TxtHtmlSource.Text
rst1.Fields("Beschrijving") = TxtBesch.Text
rst1.Fields("ModifyDate") = Now()
rst1.Update
End Sub"
Quand j'appuyais 2 x de suite sur cette commande, VB me retournait la même erreur que toi. La solution a été de rajouter rst1.Requery :
"
Private Sub SaveMailing()
rst1.Fields("MailingSourceHtml") = TxtHtmlSource.Text
rst1.Fields("Beschrijving") = TxtBesch.Text
rst1.Fields("ModifyDate") = Now()
rst1.Update
rst1.Requery
End Sub
"
J'espère que ca t'aura aidé.
dEUS
There's no success like failure
And failure's no success at all
Je suis d'accord avec Blux.
Néanmoins pour répondre à ta question, l'idée est que tu dois "rafraichir" les données de ton recordset.
ex :
"Private Sub SaveMailing()
rst1.Fields("MailingSourceHtml") = TxtHtmlSource.Text
rst1.Fields("Beschrijving") = TxtBesch.Text
rst1.Fields("ModifyDate") = Now()
rst1.Update
End Sub"
Quand j'appuyais 2 x de suite sur cette commande, VB me retournait la même erreur que toi. La solution a été de rajouter rst1.Requery :
"
Private Sub SaveMailing()
rst1.Fields("MailingSourceHtml") = TxtHtmlSource.Text
rst1.Fields("Beschrijving") = TxtBesch.Text
rst1.Fields("ModifyDate") = Now()
rst1.Update
rst1.Requery
End Sub
"
J'espère que ca t'aura aidé.
dEUS
There's no success like failure
And failure's no success at all
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
SVP pour diviser toute les valeur d'un champ par une constante n'ya til pas moyen de le faire directement par une requete sql du genre:
"UPDATE customer SET Macolone = macolone/5"?
Merci
"UPDATE customer SET Macolone = macolone/5"?
Merci