IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Mise à jour d'une requete sur une table partagée [AC-2003]


Sujet :

Access

  1. #1
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut Mise à jour d'une requete sur une table partagée
    J'ai posté un problème access sur le mauvais form...
    Je le poste donc sur le bon forum access...

    Il y a de cela un an, j'ai crée une base de donnée access qui etait partagée sur 2 postes.
    Cette base de donnée s'ouvre sous MSACCESS.EXE.
    Cela fontionne trés bien.

    Or depuis quelques jours, cette base de donnée a été implanté sur d'autre postes et je dois réactualiser assez souvent une table "affich-general" qui se trouve dans cette base de donnée partagée. Cette réactualisation se fait à partir d'une requete mise à jour.

    Arretons nous quelques instants sur cette table "affich-general" qui doit etre reactualisée assez souvent..(presque tous les lundi...)

    1) Dans un classeur Excel, j'ai un fichier Excel nommé "Affich-general.xls".

    2) Dans ma base de donnée personnelle nommée "6-Statistique Organisation .mdb", j 'ai crée une table liée à partir de ce fichier Affich-general.xls.
    Cette table liée se nomme "table_Affiche-general_Liee".
    Toujours dans ma base de donnée personnelle, à partir de la table liée "table_Affiche-general_Liee", j'ai crée une requete création de table qui m'a crée une table access nommée "table_Affich-general".
    J'ai ensuite crée une requete Mise à jour. Aprés avoir modifié le fichier Excel "Affich-general.xls", je lance la requete de mise à jour et ma table "table_Affich-general" se réactualise avec les nouvelles données.

    J'ai liée cette table "table_Affich-general" dans la base de donnée partagée qui je vous le rappel s'ouvre sous MSACCESS.EXE.

    Or, pour que je puisse réactualiser cette table "table_Affich-general" à partir de la requete mise à jour, il faut au préalable que la base de donnée partagée soit fermée et ceci sur tous les postes..

    je voudrais éviter cela et pouvoir lancer ma reque mise à jour à partir de mon bureau sans pour cela courir vers les autres poste pour fermer la base de donnée partagée.

    On m'a parlé de la technique de la base de donnée dorsale et frontale.
    Cette technique ne me semble pas approprié pour mon cas, car je ne veux pas scinder toute la base de donnée partagée.
    Je me trompe peut etre..

    Quelqu'un aurait il une idée, une solution ?..

  2. #2
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour facteur,
    On m'a parlé de la technique de la base de donnée dorsale et frontale.
    Cette technique ne me semble pas approprié pour mon cas, car je ne veux pas scinder toute la base de donnée partagée.
    À moins que je manque quelque chose dans ton explication, je crois que c'est tout le contraire. C'est la technique la mieux approprié pour une base partagée.

    Donc mon idée est de diviser ta base, tu n'auras plus de contrainte pour ta requête mise à jour.

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  3. #3
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Bonjour ,

    Avant tout, je vous souhaite à toutes et tous une bonne année 2014.
    J'étais en vacances d'où mon silence..

    Robert,
    Si je comprend bien , je dois diviser ma base de donnée .
    mais quelle base dois je diviser :
    1) la base de donnée qui est partagée
    2 ) ou ma base de donnée personnelle nommée "6-Statistique Organisation .mdb",

    car pour rappel :

    1) Dans un classeur Excel, j'ai un fichier Excel nommé "Affich-general.xls".

    2) Dans ma base de donnée personnelle nommée "6-Statistique Organisation .mdb", j 'ai crée une table liée à partir de ce fichier Affich-general.xls.
    Cette table liée se nomme "table_Affiche-general_Liee".
    Toujours dans ma base de donnée personnelle, à partir de la table liée "table_Affiche-general_Liee", j'ai crée une requete création de table qui m'a crée une table access nommée "table_Affich-general".
    J'ai ensuite crée une requete Mise à jour. Aprés avoir modifié le fichier Excel "Affich-general.xls", je lance la requete de mise à jour et ma table "table_Affich-general" se réactualise avec les nouvelles données.

    J'ai liée cette table "table_Affich-general" dans la base de donnée partagée qui je vous le rappel s'ouvre sous MSACCESS.EXE.

  4. #4
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour facteur,
    la base de donnée qui est partagée
    C'est elle qui ne doit pas avoir la table que tu veux mettre à jour.

    Cependant en relisant tes explications il me vient un doute.
    J'ai liée cette table "table_Affich-general" dans la base de donnée partagée qui je vous le rappel s'ouvre sous MSACCESS.EXE.
    Cela voudrait dire que la table est déjà liée et non présente dans l'application partagée. Une table peut-être mise à jour, il ne devrait pas y avoir de problème. Cependant quand une table est en utilisation tu ne peux la supprimer ou modifier sa structure.
    Or, pour que je puisse réactualiser cette table "table_Affich-general" à partir de la requete mise à jour
    Est-ce que tu essaies de détruire cette table pour ensuite la recréer avec de nouvelles données? Si c'est le cas même avec une table liée tu ne pourras pas y parvenir tant qu'un utilisateur sera connecté.

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  5. #5
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Est-ce que tu essaies de détruire cette table pour ensuite la recréer avec de nouvelles données? Si c'est le cas même avec une table liée tu ne pourras pas y parvenir tant qu'un utilisateur sera connecté.
    c'est exactement cela...

    Aurais tu une solution pour pallier à ce problème ?

  6. #6
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Robert,

    Et la solution de fermer à distance la base de donnée partagée

  7. #7
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour facteur,

    Pourquoi ne pas simplement vider la table? Si tu ne modifies pas la structure c'est beaucoup plus facile à faire que de déconnecter tous les utilisateurs.

    Pour déconnecter à distance, il faut que tu crées une nouvelle table dans laquelle tu as un champ oui/non (table liée) puis dans l'application sur un formulaire qui reste toujours ouvert, sur l'événement "Timer" un test qui vérifie si le champ oui/non est à oui et si oui fermeture de la bd. Tu n'as plus qu'a modifier le champ et le mettre à oui quand tu veux déconnecter les utilisateurs.

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  8. #8
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    que sous entends tu par "vider la table"...

  9. #9
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Supprimer tous les enregistrements,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE TaTable.* FROM TaTable;
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  10. #10
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Robert,
    lorsque tu dis de supprimer tous les enregistrements par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE TaTable.* FROM TaTable;
    Et ensuite, je dois bien récreer ma table "table_Affich-general"..non..?

  11. #11
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour facteur,

    Non pas besoin. Tu insères tous les enregistrements de la table
    j 'ai crée une table liée à partir de ce fichier Affich-general.xls. Cette table liée se nomme "table_Affiche-general_Liee".
    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO table_Affich-general
    SELECT table_Affiche-general_Liee.*
    FROM table_Affiche-general_Liee;
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  12. #12
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Bonjour Robert,

    Je suis un peu perdu...
    Procédons par étape..
    1) dois je donc modifier ma requete de mise à jour de ma table "table_Affich-general" ?
    2) Si oui, cette modification se fait en SQL ?

  13. #13
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour facteur,

    1) dois je donc modifier ma requete de mise à jour de ma table "table_Affich-general" ?
    Pas nécessairement, si elle fonctionnait tu n'as pas besoin de la modifier.
    2) Si oui, cette modification se fait en SQL ?
    Là non plus, la requête pour vider la table et la requête pour y insérer à nouveau les données peuvent être enregistrées avec l'outil d'Access. Tu n'as qu'à les exécuter une après l'autre lorsque tu le désires.

    Ce qu'il faut retenir c'est que l'étape qui te bloque est le fait de détruire puis de recréer la table. Au lieu de détruire la table tu la vides et le tour est joué...

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  14. #14
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    j'arrive à comprendre le processus..
    Tu as bien souligné ma problèmatique en disant :
    Ce qu'il faut retenir c'est que l'étape qui te bloque est le fait de détruire puis de recréer la table
    .

    Mais je vais encore t'embeter ..
    lorsque tu dis,
    Au lieu de détruire la table tu la vides ....
    Je ne sais pas par où commencer :
    tu m'as gentillement envoyé des morceau de code SQL mais je ne sais pas ce que je dois en faire...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE TaTable.* FROM TaTable;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO table_Affich-general
    SELECT table_Affiche-general_Liee.*
    FROM table_Affiche-general_Liee;

  15. #15
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour facteur,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE table_Affich-general.* FROM table_Affich-general;
    Ouvre l'outil création de requête d'Access et ne sélectionne pas de table. Clique sur SQL et colle ce code cela va te créer un requête suppression.

    Tu lances cette requête en premier. Par la suite tu lances la requête que tu as déjà et qui fonctionnait pour transférer tes données. Tu mentionnes une requête mise à jour, je crois que ça devrait être une requête ajout du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO table_Affich-general
    SELECT table_Affiche-general_Liee.*
    FROM table_Affiche-general_Liee;
    PS. essaie sur une copie de ton application...

    Bonne chance
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  16. #16
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Robert,
    j'ai crée la requete SQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE table_Affich-general.* FROM table_Affich-general;
    Mais impossible de l'enregister, j'ai un message d'erreur qui dit:
    "erreur de synthaxe dans la clause from"

  17. #17
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    robert, c'est bon , j'ai crée la requete suppression en mode sql.
    Je vais faire un test sur une copie et je reviendrais vers toi...

  18. #18
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Robert,
    la solution de suppression de la table ne fonctionne pas..

    Je m'explique,
    Lorsque je lance la requete suppression , celle-ci supprime bien tous les enregistrement de la table "table_Affich-general même si celle-ci est ouverte sur d'autre poste.
    Le problème vient lorsque je veux afficher les nouveaux enregistrement sur cette table "table_Affich-general . Je lance donc ma requete Mise à jour de la table "table_Affich-general et là, la requete ne fonctionne pas car la table est ouverte sur d'autre poste.

  19. #19
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Robert,
    je m'apercois que la requete de mise à jour, detruit la table "table_Affich-general" et comme tu le précisais dans tes message..c'est cette étape qui bloque .
    Ce qu'il faut retenir c'est que l'étape qui te bloque est le fait de détruire puis de recréer la table
    Et dans un de tes message, tu parles non pas de requete mise à jour mais plutot de requete ajout :
    Tu mentionnes une requête mise à jour, je crois que ça devrait être une requête ajout du genre
    Dois je donc créer une requete ajout et non une requête mise à jour ?

  20. #20
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 239
    Points : 213
    Points
    213
    Par défaut
    Robert,

    C'est ok, comme tu le soulignais, il fallait bien créer une requete ajout et non une requête de mise à jour.
    Avec la requête suppression associée à la requête ajout, je peux dorénavent modifier les enregistrements de la table "table_Affich-general" même si celle-ci est en cours d'utilisation sur d'autre poste.

    Merci énormement pour ton aide

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/06/2014, 10h24
  2. Mise à jour des statistiques Impossible sur une table volumineuse
    Par joujousagem2006 dans le forum Administration
    Réponses: 21
    Dernier message: 26/05/2014, 05h58
  3. Réponses: 5
    Dernier message: 12/05/2009, 15h57
  4. [vb6]faire une requete sur plusieurs tables
    Par Henry9 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 23/07/2006, 02h06
  5. Une requete sur 3 tables différentes. [Le retour]
    Par CritikKiller dans le forum Requêtes
    Réponses: 11
    Dernier message: 13/03/2006, 01h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo