OVH Cloud OVH Cloud

synchronisation: VB6 Access/ADO

1 réponse
Avatar
PasPossible
Bonjour,

J'ai un problème :-)

Voici:
1) j'ai un programme en Visual Basic qui utilise ADO pour accéder à
une base de données Access (lecture et écriture)
2) en particulier, j'ajoute un enregistrement à ma base de données
via ce programme VB
3)... et j'envois à Excel une commande pour lire la nouvelle donnée
Excel accède à la base de données via ADO
i.e. le programme VB gère Excel,
c'est le programme VB qui démarre Excel (et Excel
n'écrit jamais dans la base de données)
Excel ne fait rien par lui-même, c'est VB qui exécute
des macros Excel

Problème:
4) Excel ne voit pas toujours la dernière donnée enregistrée par le
programme VB
En fait, je peux écrire plusieurs enregistrements avant qu'Excel
voit du nouveau

C'est comme si VB écrit dans la base de données, mais que
"physiquement" ça
ne soit pas écrit immédiatement. Il y a un délai. Pourtant VB
écrit des données
et ensuite envoit une commande à Excel (i.e. exécute un macro
Excel). C'est tout
à fait séquentiel.

Qqu'un peut-il me faire un commentaire ou des suggestions?
Est-ce possible de faire en sorte que Excel voit immédiatement les
changements?

Merci

1 réponse

Avatar
PasPossible
Re-Bonjour,

J'ai oublié de dire que je faisais cela avec Jet 4.0
J'ai fini aussi par comprendre que c'était normal (?) d'avoir un delai
possible de 5 secondes.

J'ai trouvé une suggestion ici:
http://groups.google.ca/groups?q­o+exclusiveasyncdelay&hl=en&lr=&selm?a0dece%240%243677%245402220f%40news.sunrise.ch&rnum=2
Sauf que ce n'est pas complet, j'ai testé avec l'ajout d'un PageTimeout
de 100. (le 100 est arbitraire, je ne voulais pas mettre 0)
Ce qui a effectivement un effet notabel. Je met un delai de 1 secondes
dans mon démo et tout va bien.
Sauf que j'imagine que Microsoft ne doit pas avoir mis 5 secondes au
hasard.
Donc ce n'est probablement pas la bonne approche. Surtout qu'il faut
manipuler la base de registrer.
Mais sachant que ça dure au plus 5 secondes (au max 6 secondes), ça peut
être un point de départ.
Il reste à occuper l'utilisateur pendant 5 longues secondes :-)

Remarquez qu'avec un lien ODBC je n'ai pas ce long délai de 5 secondes.
Une durée d'une seconde semble etre plus que suffisant. Allez savoir
pourquoi.

Il me semble qu'il devrait y avoir une solution direct quand deux
logiciel accède à la même base de
données d'être en écriture presque directe sur le support physique.

ok. j'ai une autre piste possible.
Il parait que Access a access au buffer d'écriture.
Il est peut-être possible d'écrire une macro Access qu'on appelle via ADO
(ODBC?)
Mais ce sera pour une autre fois.

"PasPossible" wrote in message
news:7RU1e.24659$
Bonjour,

J'ai un problème :-)

Voici:
1) j'ai un programme en Visual Basic qui utilise ADO pour accéder à
une base de données Access (lecture et écriture)
2) en particulier, j'ajoute un enregistrement à ma base de données
via ce programme VB
3)... et j'envois à Excel une commande pour lire la nouvelle donnée
Excel accède à la base de données via ADO
i.e. le programme VB gère Excel,
c'est le programme VB qui démarre Excel (et Excel
n'écrit jamais dans la base de données)
Excel ne fait rien par lui-même, c'est VB qui exécute
des macros Excel

Problème:
4) Excel ne voit pas toujours la dernière donnée enregistrée par le
programme VB
En fait, je peux écrire plusieurs enregistrements avant
qu'Excel

voit du nouveau

C'est comme si VB écrit dans la base de données, mais que
"physiquement" ça
ne soit pas écrit immédiatement. Il y a un délai. Pourtant VB
écrit des données
et ensuite envoit une commande à Excel (i.e. exécute un macro
Excel). C'est tout
à fait séquentiel.

Qqu'un peut-il me faire un commentaire ou des suggestions?
Est-ce possible de faire en sorte que Excel voit immédiatement les
changements?

Merci