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?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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?qo+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
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?qo+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" <pas@possible.bidon.com> wrote in message
news:7RU1e.24659$He3.203076@wagner.videotron.net...
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?
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?qo+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?