Access:pb sur succession de requêtes création

Résolu/Fermé
Arapata Messages postés 9 Date d'inscription mardi 20 mars 2012 Statut Membre Dernière intervention 29 mars 2012 - 23 mars 2012 à 11:13
Arapata Messages postés 9 Date d'inscription mardi 20 mars 2012 Statut Membre Dernière intervention 29 mars 2012 - 29 mars 2012 à 09:17
Bonjour,


Actuellement en stage je me dois de développer un outils sous forme de site internet.
Le rapport avec Access est simple, j'ai besoin de créer un robot qui va me récupérer toutes les données dont à besoin mon outil et les envoyer à ma base de données MySQL.

Maintenant le soucis en lui même. Je dois récupérer sept tables toutes les nuits via une Gateway et pour éviter de bloquer la Gateway je lance sept requêtes de créations qui doivent donc faire une copie de ces tables en local afin de pouvoir travailler dessus.

Seulement Access n'arrive jamais à exécuter les sept requêtes d'affiler. Aussi bien qu'elles soient lancées via une macro que manuellement l'une après l'autre. Dès qu'une requête plante, je dois fermer la base en la compactant puis relancer la requête qui a planté et continuer jusqu'à ce que ça replante pour recommencer la manipulation susnommées ou jusqu'à en avoir finit.

Si quelqu'un aurait une idée d'où ça peut venir et comment y remédier alors merci d'avance :)

5 réponses

blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
23 mars 2012 à 11:38
Salut,

il faut donc déjà découvrir pourquoi les requêtes se plantent...
Que sont-elles supposées faire ?
Peux-tu poster le SQL ?
0
Arapata Messages postés 9 Date d'inscription mardi 20 mars 2012 Statut Membre Dernière intervention 29 mars 2012
23 mars 2012 à 12:00
le sql est des plus simples:

SELECT dbo_CRI_INTERVENTION.* INTO cri_intervention
FROM dbo_CRI_INTERVENTION;

Je récupère toute ma table liée et je le mets dans une nouvelle table en locale.
Quand au message d'erreur dans le cas où mes requêtes plantent:

Impossible d'ouvrir la base de données "nom_de_la_requête". Ce n'est pas une base de données que votre application reconnait, ou le fichier est peut être endommagé.

Je ferme la base données en la compactant, je rouvre la DB et relance la requête et ça marche. Mais bon impossible de faire un robot dans ces circonstances
0
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
23 mars 2012 à 12:34
Tu dis que manuellement, ça plante aussi ? Etrange...

Comment fais-tu pour lancer les requêtes via ton 'robot' ?
0
Arapata Messages postés 9 Date d'inscription mardi 20 mars 2012 Statut Membre Dernière intervention 29 mars 2012
23 mars 2012 à 14:12
J'ai une macro autoexec qui lance mes 7 requetes créations l'une après l'autre (toutes identique à celle dont je t'ai donnée le code). Et j'ai un .bat qui me permet de lancer ma base access.
Mais le soucis n'est pas à ce niveau car en effet même en lançant les requêtes l'une après l'autre manuellement ça finit par planter.

Se peut il que ce soit lier à la taille des tables? Car elles font environ 100 000 lignes chacunes.
Pour un total de 2 à 3 Go il me semble.
0
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
23 mars 2012 à 14:37
Plutôt que de t'amuser avec des requêtes SQL qui durent, tu devrais essayer l'action copierobjet dans ta macro et dupliquer ta table, ça serait plus court...
0
Arapata Messages postés 9 Date d'inscription mardi 20 mars 2012 Statut Membre Dernière intervention 29 mars 2012
Modifié par Arapata le 23/03/2012 à 15:54
Ok je vais regarder ça. Je dois avouer que je ne connaissais pas du tout access il y a un mois ^^.
Je te dirais si ça marche.

Edit: la table est bien copiée mais c'est toujours une table liée. Hors j'ai besoin de ne plus avoir le lien odbc sur ma nouvelle table.
0
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
23 mars 2012 à 15:53
C'est étrange :

https://support.microsoft.com/fr-fr/office/action-de-macro-copierobjet-6b2d0a2c-7e43-4c0d-89c5-42d74da858c7?ocmsassetid=ha001226213&correlationid=81bced0c-0a25-491b-a375-9686944194d6&ui=fr-fr&rs=fr-fr&ad=fr

Sinon, le docmd.copyobject existe en VBA, ça pourrait sans doute marcher en appelant une fonction qui fait la copie via la macro, avec executercode...
0
Arapata Messages postés 9 Date d'inscription mardi 20 mars 2012 Statut Membre Dernière intervention 29 mars 2012
23 mars 2012 à 17:53
Ok, je testerais ça lundi en arrivant au boulot. En tout cas merci pour ton aide jusque maintenant :)
0
Arapata Messages postés 9 Date d'inscription mardi 20 mars 2012 Statut Membre Dernière intervention 29 mars 2012
26 mars 2012 à 09:38
Alors en ce début de semaine je reprends là où nous en étions resté vendredi.

Pour le commande copierObjet dans Access en fait elle existe bien mais pas disponible par défaut. Pour y accéder il faut simplement cliquer sur afficher toutes les actions dans les options de création de macro ^^.

Néanmoins cette solution me copie la table avec mon lien odbc vers la table sur les serveurs de la boite. Or (et c'est là l'origine de tous mes problèmes) il me faut une copie de cette table indépendante de celle du serveur donc que je copie la table sans le lien odbc.

Je commence donc à sécher un peu au niveau de la solution à utiliser.
0
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
26 mars 2012 à 09:55
Un truc m'échappe : tu parles de lien odbc, mais celui-ci n'existe pas au niveau de la base, il n'est en principe utilisé que lorsque l'on veut accéder à des données depuis l'extérieur...
Si tu recopies l'objet, je ne vois pas ce qui te fait dire que tu as également recopié 'le lien odbc' ?
0
Arapata Messages postés 9 Date d'inscription mardi 20 mars 2012 Statut Membre Dernière intervention 29 mars 2012
26 mars 2012 à 10:38
J'avais fait un copier objet vendredi soir. La table résultante avait le logo d'une table liée.
Ce matin cette fameuse table contenait les informations mises à jour pendant le week end sur la table source de l'entreprise. La table copiée possède donc bien toujours le lien vers la table source.
0
blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
26 mars 2012 à 11:10
D'accord, ce n'est donc pas une table avec odbc mais une table liée...
Dans ce cas, et c'est bien un problème, la méthode copierobjet ne fait que dupliquer la table sur la base d'origine, ce qui fait qu'elle reste une table liée.
Si tu as accès à la base d'origine (celle qui contient les tables), tu devrais faire une copie de tes tables sur celle-ci, pour ensuite les recopier sur la base qui contient les tables liées, elles devraient redevenir des tables locales...
Sinon, je pense qu'il faudrait passer par du vba avec transaction pour être sûr que c'est bien recopié...
0
Arapata Messages postés 9 Date d'inscription mardi 20 mars 2012 Statut Membre Dernière intervention 29 mars 2012
26 mars 2012 à 15:17
Alors des news. J'ai essayé de passer par une nouvelle méthode et d'importer les tables plutôt que de créer des tables liées puis des tables locales. Hors cette nouvelle méthode plante exactement comme la première.
Je pense que le soucis vient de la gateway par laquelle je passe. Je vais donc contacter le responsable pour avoir des nouvelles sur la connexion à la gateway. Je te tiens au courant.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Arapata Messages postés 9 Date d'inscription mardi 20 mars 2012 Statut Membre Dernière intervention 29 mars 2012
29 mars 2012 à 09:17
Bon le problème est enfin résolu. Le soucis venait bien de la connexion avec la Gateway.

J'ai donc poser des filtres supplémentaires pour alléger la quantité de données récupérées sur les tables et maintenant tout fonctionne.

Merci pour ton aide et ton temps.
0