Je travaille sur une application d=E9velopp=E9e en Access 2000 utilisant
beaucoup VBA.
Cette application est install=E9e sur 5 postes de travail.
Et comme beaucoup, j'ai moi aussi cette erreur qui s'affiche sur un
seul de mes formulaires et, pire, sur un seul des 5 postes de travail
(incompr=E9hensible).
J'utilise souvent la syntaxe docmd.runsql pour ex=E9cuter une action de
suppression, de modification, d'impression... Mais le truc c'est que
j'utilise cette syntaxe dans toute mon application, alors POURQUOI il
n'y a que ce formulaire qui plante (moi pas comprendre du tout).
Si quelqu'un a trouv=E9 la solution qu'il nous sauve !!
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
Gilles MOUGNOZ
Bonjour à tous, Je travaille sur une application développée en Access 2000 utilisant beaucoup VBA. Cette application est installée sur 5 postes de travail. Et comme beaucoup, j'ai moi aussi cette erreur qui s'affiche sur un seul de mes formulaires et, pire, sur un seul des 5 postes de travail (incompréhensible). J'utilise souvent la syntaxe docmd.runsql pour exécuter une action de suppression, de modification, d'impression... Mais le truc c'est que j'utilise cette syntaxe dans toute mon application, alors POURQUOI il n'y a que ce formulaire qui plante (moi pas comprendre du tout). Si quelqu'un a trouvé la solution qu'il nous sauve !! Merci d'avance
Bonjour, Stéphanie
Peux-tu nous indiquer l'action qui bloque, ainsi que l'architecture de ta base (bases frontales sur les postes et dorsale sur serveur OU fichier partagé OU fichiers "tout-en-un" installé sur chaque poste)? Les postes ont-ils tous la même version de Windows et d'Office ? Les deux sont-ils à jour ?
Dans l'attente d'autres détails...
Bonjour à tous,
Je travaille sur une application développée en Access 2000 utilisant
beaucoup VBA.
Cette application est installée sur 5 postes de travail.
Et comme beaucoup, j'ai moi aussi cette erreur qui s'affiche sur un
seul de mes formulaires et, pire, sur un seul des 5 postes de travail
(incompréhensible).
J'utilise souvent la syntaxe docmd.runsql pour exécuter une action de
suppression, de modification, d'impression... Mais le truc c'est que
j'utilise cette syntaxe dans toute mon application, alors POURQUOI il
n'y a que ce formulaire qui plante (moi pas comprendre du tout).
Si quelqu'un a trouvé la solution qu'il nous sauve !!
Merci d'avance
Bonjour, Stéphanie
Peux-tu nous indiquer l'action qui bloque, ainsi que l'architecture de ta
base (bases frontales sur les postes et dorsale sur serveur OU fichier
partagé OU fichiers "tout-en-un" installé sur chaque poste)?
Les postes ont-ils tous la même version de Windows et d'Office ? Les deux
sont-ils à jour ?
Bonjour à tous, Je travaille sur une application développée en Access 2000 utilisant beaucoup VBA. Cette application est installée sur 5 postes de travail. Et comme beaucoup, j'ai moi aussi cette erreur qui s'affiche sur un seul de mes formulaires et, pire, sur un seul des 5 postes de travail (incompréhensible). J'utilise souvent la syntaxe docmd.runsql pour exécuter une action de suppression, de modification, d'impression... Mais le truc c'est que j'utilise cette syntaxe dans toute mon application, alors POURQUOI il n'y a que ce formulaire qui plante (moi pas comprendre du tout). Si quelqu'un a trouvé la solution qu'il nous sauve !! Merci d'avance
Bonjour, Stéphanie
Peux-tu nous indiquer l'action qui bloque, ainsi que l'architecture de ta base (bases frontales sur les postes et dorsale sur serveur OU fichier partagé OU fichiers "tout-en-un" installé sur chaque poste)? Les postes ont-ils tous la même version de Windows et d'Office ? Les deux sont-ils à jour ?
Dans l'attente d'autres détails...
Stephanie
Alors le débogueur s'arrête sur docmd.RunSQL ("Insert Into Recapitulatif Values....") bref sur une reqête d'ajout. Ca c'est sur un bouton Ajouter. Sur mon bouton supprimer le déboguer s'arrête sur Docmd.RunSQL("Delete * From Recapitulatif...") donc une requête de suppression.
Et je me suis demandée si ça fonctionnerait en passant par une variable de type recordset. Donc sur un bouton de validation j'ai la syntaxe suivante : dim Req as Recordset dim Res as DAO.OpenRecordset
set Req=CurrentDB.CreateQueryDef("Select * From Recapitulatif Where....) set Res=Req.Openrecordset
Et ça fonctionne !! Alors je vais essayer de remplacer tous mes docmd.runsql par cette syntaxe.
Mais tout ça, je le fais aussi dans les autres formulaires qui eux fonctionnent. Je vois vraiment pas où est la différence qui ferait que ça ne fonctionne pas dans ce formulaire
Pour l'architecture de l'application, la base de données est installée sur un serveur et les interfaces sont installées sur chacunes des 5 machines et sont reliées à cette base. Les 5 postes ont été installés en même temps par le même fournisseur avec la même version d'access. Mais le poste où ça ne fonctionne pas a plus de logiciels (de compta, de paye,...) et surtout c'est le seul à avoir un modem.
Voilà je vous tiens au courant pour savoir si ma modification fonctionne. Merci
Alors le débogueur s'arrête sur docmd.RunSQL ("Insert Into
Recapitulatif Values....") bref sur une reqête d'ajout. Ca c'est sur
un bouton Ajouter.
Sur mon bouton supprimer le déboguer s'arrête sur
Docmd.RunSQL("Delete * From Recapitulatif...") donc une requête de
suppression.
Et je me suis demandée si ça fonctionnerait en passant par une
variable de type recordset.
Donc sur un bouton de validation j'ai la syntaxe suivante :
dim Req as Recordset
dim Res as DAO.OpenRecordset
set Req=CurrentDB.CreateQueryDef("Select * From Recapitulatif
Where....)
set Res=Req.Openrecordset
Et ça fonctionne !! Alors je vais essayer de remplacer tous mes
docmd.runsql par cette syntaxe.
Mais tout ça, je le fais aussi dans les autres formulaires qui eux
fonctionnent. Je vois vraiment pas où est la différence qui ferait
que ça ne fonctionne pas dans ce formulaire
Pour l'architecture de l'application, la base de données est
installée sur un serveur et les interfaces sont installées sur
chacunes des 5 machines et sont reliées à cette base.
Les 5 postes ont été installés en même temps par le même
fournisseur avec la même version d'access. Mais le poste où ça ne
fonctionne pas a plus de logiciels (de compta, de paye,...) et surtout
c'est le seul à avoir un modem.
Voilà je vous tiens au courant pour savoir si ma modification
fonctionne.
Merci
Alors le débogueur s'arrête sur docmd.RunSQL ("Insert Into Recapitulatif Values....") bref sur une reqête d'ajout. Ca c'est sur un bouton Ajouter. Sur mon bouton supprimer le déboguer s'arrête sur Docmd.RunSQL("Delete * From Recapitulatif...") donc une requête de suppression.
Et je me suis demandée si ça fonctionnerait en passant par une variable de type recordset. Donc sur un bouton de validation j'ai la syntaxe suivante : dim Req as Recordset dim Res as DAO.OpenRecordset
set Req=CurrentDB.CreateQueryDef("Select * From Recapitulatif Where....) set Res=Req.Openrecordset
Et ça fonctionne !! Alors je vais essayer de remplacer tous mes docmd.runsql par cette syntaxe.
Mais tout ça, je le fais aussi dans les autres formulaires qui eux fonctionnent. Je vois vraiment pas où est la différence qui ferait que ça ne fonctionne pas dans ce formulaire
Pour l'architecture de l'application, la base de données est installée sur un serveur et les interfaces sont installées sur chacunes des 5 machines et sont reliées à cette base. Les 5 postes ont été installés en même temps par le même fournisseur avec la même version d'access. Mais le poste où ça ne fonctionne pas a plus de logiciels (de compta, de paye,...) et surtout c'est le seul à avoir un modem.
Voilà je vous tiens au courant pour savoir si ma modification fonctionne. Merci
Stephanie
OUI !! ça y est ça fonctionne !! Donc j'ai remplacé tous mes Docmd.RunSQL("Requête action") par une variable de type recordset qui exécute cette requête action.
Même mes docmd.OpenReport et docmd.Close(acform...) plantaient ; mais du moment où j'ai remplacé tous mes docmd.RunSQL, ils ont fonctionné.
Autre chose, j'ai trouvé une différence entre ce formulaire qui ne fonctionnait pas, et les autres formulaire de mon application qui eux n'ont pas du tout de problème. C'est que j'avais mis une requête dans le recordsource de ce formulaire. Mais comme aucun des contrôles de ce formulaire n'étaient dépendants de cette requête , je l'ai enlevé.
Donc en gros je ne sais pas vraiment pourquoi maintenant ça fonctionne. Peut-être que mes "docmd" que j'avais utilisé à tout va dans ce formulaire, prenait trop de mémoire. Et qu'en plus, Access devait prendre encore plus de mémoire avec la requête qui y était rattachée... je sais pas trop.
Voilà j'espère que mon exemple pourra servir à d'autres, à bientôt
OUI !! ça y est ça fonctionne !!
Donc j'ai remplacé tous mes Docmd.RunSQL("Requête action")
par une variable de type recordset qui exécute cette requête action.
Même mes docmd.OpenReport et docmd.Close(acform...) plantaient ; mais
du moment où j'ai remplacé tous mes docmd.RunSQL, ils ont
fonctionné.
Autre chose, j'ai trouvé une différence entre ce formulaire qui ne
fonctionnait pas, et les autres formulaire de mon application qui eux
n'ont pas du tout de problème.
C'est que j'avais mis une requête dans le recordsource de ce
formulaire. Mais comme aucun des contrôles de ce formulaire n'étaient
dépendants de cette requête , je l'ai enlevé.
Donc en gros je ne sais pas vraiment pourquoi maintenant ça
fonctionne. Peut-être que mes "docmd" que j'avais utilisé à tout va
dans ce formulaire, prenait trop de mémoire.
Et qu'en plus, Access devait prendre encore plus de mémoire avec la
requête qui y était rattachée... je sais pas trop.
Voilà j'espère que mon exemple pourra servir à d'autres,
à bientôt
OUI !! ça y est ça fonctionne !! Donc j'ai remplacé tous mes Docmd.RunSQL("Requête action") par une variable de type recordset qui exécute cette requête action.
Même mes docmd.OpenReport et docmd.Close(acform...) plantaient ; mais du moment où j'ai remplacé tous mes docmd.RunSQL, ils ont fonctionné.
Autre chose, j'ai trouvé une différence entre ce formulaire qui ne fonctionnait pas, et les autres formulaire de mon application qui eux n'ont pas du tout de problème. C'est que j'avais mis une requête dans le recordsource de ce formulaire. Mais comme aucun des contrôles de ce formulaire n'étaient dépendants de cette requête , je l'ai enlevé.
Donc en gros je ne sais pas vraiment pourquoi maintenant ça fonctionne. Peut-être que mes "docmd" que j'avais utilisé à tout va dans ce formulaire, prenait trop de mémoire. Et qu'en plus, Access devait prendre encore plus de mémoire avec la requête qui y était rattachée... je sais pas trop.
Voilà j'espère que mon exemple pourra servir à d'autres, à bientôt