OVH Cloud OVH Cloud

AdoDC et lenteur de mise à jour

3 réponses
Avatar
Newsgroups
Bonjour,

Je suis confronté au problème suivant: j'ai une application utilisant dans
une form un AdoDC. Celui-ci semble fonctionner sauf que lorsqu'un
enregistrement est ajouté, il semble que ce dernier n'est pas visible
directement par une requète faite par ailleurs en utilisant un
ADODB.RecordSet par exemple.

Y a-t-il un moyen de forcer la mise à jour de la db (une espèce de commit)
lorsque qu'un enregisterment à été ajouté? La séquence utilisée pour la
création est Adodc1.RecordSet.AddNew et ensuite lors d'un clic sur un bouton
Adodc1.RecordSet.Update afin de valider le nouvel enregistrement. Si dès
après l'update, une requête SQL du type "SELECT * FROM MaTable" est faite,
le nouvel enregistrement est non trouvé.

Pour la petite histoire, si je met un point d'arrêt et que j'avance pas à
pas, l'enregistrement est bien trouvé. Cela me laisse penser qu'il y a une
mise à jour asynchrone de la base de données (dans un thread probablement).

Ce problème me casse les pieds depuis un bout de temps...toutes les idées
sont le bienvenues!!!

D'avance un grand merci!

Philippe

3 réponses

Avatar
andre.araste
Bonjour

Au hasard, essayez de placer un adodc1.refresh tout de suite après le
prédicat.
--
Bonne réception.

http://perso.orange.fr/andre.araste/
Membre du Club Win's: http://www.clubwins.org
Avertissement: Je ne vends rien.



"Newsgroups" a écrit dans le message de news:
44e9ac3b$0$28396$
Bonjour,

Je suis confronté au problème suivant: j'ai une application utilisant dans
une form un AdoDC. Celui-ci semble fonctionner sauf que lorsqu'un
enregistrement est ajouté, il semble que ce dernier n'est pas visible
directement par une requète faite par ailleurs en utilisant un
ADODB.RecordSet par exemple.

Y a-t-il un moyen de forcer la mise à jour de la db (une espèce de commit)
lorsque qu'un enregisterment à été ajouté? La séquence utilisée pour la
création est Adodc1.RecordSet.AddNew et ensuite lors d'un clic sur un
bouton Adodc1.RecordSet.Update afin de valider le nouvel enregistrement.
Si dès après l'update, une requête SQL du type "SELECT * FROM MaTable" est
faite, le nouvel enregistrement est non trouvé.

Pour la petite histoire, si je met un point d'arrêt et que j'avance pas à
pas, l'enregistrement est bien trouvé. Cela me laisse penser qu'il y a une
mise à jour asynchrone de la base de données (dans un thread
probablement).

Ce problème me casse les pieds depuis un bout de temps...toutes les idées
sont le bienvenues!!!

D'avance un grand merci!

Philippe



Avatar
Newsgroups
Bonjour,

Effectivement, mais j'ai déjà essayé à la fois un .refresh et un .requery
sans réel succès!

Merci,

Philippe

"andre.araste" wrote in message
news:44e9b7ee$0$1028$
Bonjour

Au hasard, essayez de placer un adodc1.refresh tout de suite après le
prédicat.
--
Bonne réception.

http://perso.orange.fr/andre.araste/
Membre du Club Win's: http://www.clubwins.org
Avertissement: Je ne vends rien.



"Newsgroups" a écrit dans le message de news:
44e9ac3b$0$28396$
Bonjour,

Je suis confronté au problème suivant: j'ai une application utilisant
dans une form un AdoDC. Celui-ci semble fonctionner sauf que lorsqu'un
enregistrement est ajouté, il semble que ce dernier n'est pas visible
directement par une requète faite par ailleurs en utilisant un
ADODB.RecordSet par exemple.

Y a-t-il un moyen de forcer la mise à jour de la db (une espèce de
commit) lorsque qu'un enregisterment à été ajouté? La séquence utilisée
pour la création est Adodc1.RecordSet.AddNew et ensuite lors d'un clic
sur un bouton Adodc1.RecordSet.Update afin de valider le nouvel
enregistrement. Si dès après l'update, une requête SQL du type "SELECT *
FROM MaTable" est faite, le nouvel enregistrement est non trouvé.

Pour la petite histoire, si je met un point d'arrêt et que j'avance pas à
pas, l'enregistrement est bien trouvé. Cela me laisse penser qu'il y a
une mise à jour asynchrone de la base de données (dans un thread
probablement).

Ce problème me casse les pieds depuis un bout de temps...toutes les idées
sont le bienvenues!!!

D'avance un grand merci!

Philippe







Avatar
SAISAS
Bonjour,

effectivement, la mise à jour est asynchrone, et s'effectue à un autre
moment que celui auquel on l'attend. De mémoire, la mise à jour n'est
effective que lorsque le recordset change de position (movenext, movefirst
...) et pas lors de l'update.

En sepérant avoir répondu ...

"Newsgroups" a écrit :

Bonjour,

Je suis confronté au problème suivant: j'ai une application utilisant dans
une form un AdoDC. Celui-ci semble fonctionner sauf que lorsqu'un
enregistrement est ajouté, il semble que ce dernier n'est pas visible
directement par une requète faite par ailleurs en utilisant un
ADODB.RecordSet par exemple.

Y a-t-il un moyen de forcer la mise à jour de la db (une espèce de commit)
lorsque qu'un enregisterment à été ajouté? La séquence utilisée pour la
création est Adodc1.RecordSet.AddNew et ensuite lors d'un clic sur un bouton
Adodc1.RecordSet.Update afin de valider le nouvel enregistrement. Si dès
après l'update, une requête SQL du type "SELECT * FROM MaTable" est faite,
le nouvel enregistrement est non trouvé.

Pour la petite histoire, si je met un point d'arrêt et que j'avance pas à
pas, l'enregistrement est bien trouvé. Cela me laisse penser qu'il y a une
mise à jour asynchrone de la base de données (dans un thread probablement).

Ce problème me casse les pieds depuis un bout de temps...toutes les idées
sont le bienvenues!!!

D'avance un grand merci!

Philippe