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

Résolu
Arapata Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
Arapata Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -
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 27122 Date d'inscription   Statut Modérateur Dernière intervention   3 360
 
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   Statut Membre Dernière intervention  
 
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 27122 Date d'inscription   Statut Modérateur Dernière intervention   3 360
 
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   Statut Membre Dernière intervention  
 
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 27122 Date d'inscription   Statut Modérateur Dernière intervention   3 360
 
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   Statut Membre Dernière intervention  
 
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 27122 Date d'inscription   Statut Modérateur Dernière intervention   3 360
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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 27122 Date d'inscription   Statut Modérateur Dernière intervention   3 360
 
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   Statut Membre Dernière intervention  
 
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 27122 Date d'inscription   Statut Modérateur Dernière intervention   3 360
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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