2009-02-13 9 views
2

Je rencontre un problème où DoCmd.OutputTo acOutputQuery supprime la requête elle-même la deuxième fois qu'elle est exécutée.Bizarre Bug: "DoCmd.OutputTo acOutputQuery" est en train de supprimer la requête

Y at-il une solution de contournement/correctif pour ce bogue (au moins semble être un bug pour moi)?

+0

Pourriez-vous publier le code que vous utilisez (même si vous devez l'anonymiser)? Avez-vous essayé de mettre un point d'arrêt avant l'appel à DoCmd et de passer à travers et voir si la requête est vraiment supprimée lors de la deuxième exécution? – BIBD

+0

C'est plutôt bizarre en fait. J'ai fait une copie de la base de données, et la copie fonctionne correctement maintenant. –

+0

J'ai également vu ce comportement. – stimms

Répondre

1

Re: votre commentaire.

Avez-vous fait une copie de fichier, ou avez-vous copié les objets entre deux bases de données? Si la seconde, vous pouvez essayer de faire un compact et réparer sur une copie de fichier de l'original.

Vous pourriez même vouloir essayer cela sur le vrai original.

+0

Je n'ai rien copié entre les bases de données. –

1

Je pense que le comportement que vous avez décrit "... supprime la requête elle-même, la deuxième fois qu'il est exécuté" se produit lorsque la requête ne renvoie aucun enregistrement.

+0

J'ai testé cela après m'avoir montré cette possibilité, mais cela ne semble pas être le cas. En fait cette fois, je l'ai couru deux fois et ça a marché. Très étrange. –

0

ça m'arrive aussi. J'utilise Access 2003.

La seule solution de contournement que j'ai trouvée est de conserver une copie du mdb d'origine, de cette façon je peux restaurer le mdb quand cela arrive.

Il semble que Access 2007 n'a pas ce problème.

1

même 2007 a ce problème, ça m'arrive aussi, mais de façon très aléatoire. Parfois je peux l'exécuter plusieurs fois avant que le bogue n'arrive, d'autres fois ça arrive tout de suite, c'est une petite base de données, 29 enregistrements, et une petite requête, donc c'est vraiment un bug d'accès

1

Je sais que ça fait longtemps que le message original, mais j'ai trouvé une solution que je n'ai pas vue ici. J'utilise Access 2010. Il semble que presque chaque fois que j'exécute DoCmd.OutputTo acOutputQuery..., ma requête enregistrée apparaît toujours dans ma liste de requêtes, mais le SQL est effacé, ce qui supprime par la suite mon fichier de sortie du réseau.

Je viens de réinitialiser le SQL avant d'appeler DoCmd.OutputTo acOutputQuery...

CurrentDb.QueryDefs("MyQuery").SQL = "SELECT..." 

puis appelez

DoCmd.OutputTo acOutputQuery, "MyQuery"... 

Jusqu'à présent, si bon.

0

Une autre solution consiste à modifier la requête initiale à une table faire requête, puis utilisez

DoCmd.OutputTo acOutputTable, TableName, ... 

Cela signifie que vous avez une table supplémentaire traîner, mais vous pouvez toujours faire une table de suppression dans le code ou via une requête après pour nettoyer.