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

Requêtes et SQL. Discussion :

Mise à jour entre table liée et table access


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Points : 32
    Points
    32
    Par défaut Mise à jour entre table liée et table access
    Bonjour,

    J'ai une table Access liée à une feuille Excel. Ce fichier excel que je reçois tous les jours de collaborateurs contient des commandes de matériels. Ce fichier contient toujours un historique sur 20 jours.

    Etant donnée qu'il est difficile de travailler avec une table liée, j'ai créé une table Access et une requête ajout, qui ajoute les données de la table liée à la table Access.

    A chaque fois que je reçois une nouvelle version de ce fichiers Excel, je ne peux pas exécuter la requête d'ajout, puisque j'ai déjà l'historique dans la table (risques de doublons et plus).

    Maintenant ce que j'aimerais faire c'est créer une requête mise à jour qui mettrait à jour la table Access que j'ai créé à partir de la table liée qui, elle, est mise à jour automatiquement (puisqu'elle est liée) --> mettre à jour les champs qui ont été modifiés et ajouter les nouveaux champs (s'il y en a).

    D'après ce que j'ai pu comprendre, la requête mise à jour ne peut que mettre à jour les champs existant, mais pas ajouter de nouveaux enregistrements.

    Je voulais donc savoir comment je pouvais faire.

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 552
    Points
    24 552
    Par défaut
    Bonjour,

    2 requetes successives. D'abord la mise à jour ensuite l'ajout.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Points : 32
    Points
    32
    Par défaut
    Bonjour et merci pour la réponse,

    J'ai bien compris qu'il faut d'abord effectuer une requête de mise à jour. Mais comment faire pour ajouter seulement les nouveaux enregistrements, et pas les anciennes avec (pour rappelle, le fichier Excel contient un historique sur 20 jours).

    Merci

  4. #4
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Tu en dis peu sur les champs... Mais si tu indexes les champs qui vont bien sans doublons, l'ajout va échouer pour les données déjà existantes (à noter qu'on peu faire des indexs sur plusieurs champs)...

    Et on peu faire en sorte de supprimer les messages d'alerte...

    Cela devrait t'aider à résoudre ton problème...

    Au demeurant, je ne comprend pas bien cette remarque...

    Etant donnée qu'il est difficile de travailler avec une table liée
    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  5. #5
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    Merci pour ta réponse. La requête ajout avec champ indexé à fonctionné. Par contre la requête mise à jour ne fonctionne pas. J'ai créé la requête en mode création:

    • J'ai ajouté la table liée et la table Access que je veux mettre à jour
    • Ensuite j'ai relié les champs corrspondant entre les deux tables
    • J'ai ajouté à partir de la table liée les champs qui contiendront les mises à jour
    • Et dans Mise à jour, j'ai mis [NomTableDestination].[ChampDestination]


    Est-ce que c'est bien comme ça qu'il faut procéder?

    Au demeurant, je ne comprend pas bien cette remarque...
    Etant donnée qu'il est difficile de travailler avec une table liée
    Je voulais dire par là qu'il par exemple impossible d'ajouter ou supprimer des enregistrements dans une table liée, et comme j'ai besoin d'un historique complet, c'est pour ça que...

    Merci

  6. #6
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Oui, cela à l'air tout à fait correct (encore qu'on ne connaît pas la structure exact de la requête)...

    Normalement, tu devrais avoir un message qui t'indique ce qui ne fonctionne pas ! Que dit-il ?

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  7. #7
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Points : 32
    Points
    32
    Par défaut
    Il n'y a pas de message d'erreur, mais il me dit qu'il n'a mis aucune ligne à jour.

  8. #8
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Re,

    Il n'y a pas de message d'erreur, mais il me dit qu'il n'a mis aucune ligne à jour.


    Sans les structures de la table source et de la table destination et le sql de la requête, difficile de t'aider...

    domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  9. #9
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    Voici la requête de mise à jour créer avec Access:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE Suivi_Commandes_Excel INNER JOIN Suivi_Commandes ON (Suivi_Commandes_Excel.[Motif de retour] = Suivi_Commandes.[Motif de retour]) AND (Suivi_Commandes_Excel.[Quantité en retour] = Suivi_Commandes.[Quantité en retour]) AND (Suivi_Commandes_Excel.[Date de retour] = Suivi_Commandes.[Date de retour]) AND (Suivi_Commandes_Excel.[Quantité en rupture] = Suivi_Commandes.[Quantité en rupture]) AND (Suivi_Commandes_Excel.[Date de rupture ligne] = Suivi_Commandes.[Date de rupture ligne]) AND (Suivi_Commandes_Excel.[Date de livraison] = Suivi_Commandes.[Date de livraison]) AND (Suivi_Commandes_Excel.[Quantité expédiée] = Suivi_Commandes.[Quantité expédiée]) AND (Suivi_Commandes_Excel.[Date d'expédition] = Suivi_Commandes.[Date d'expédition]) AND (Suivi_Commandes_Excel.[Date de création commande] = Suivi_Commandes.[Date de création commande]) AND (Suivi_Commandes_Excel.[Code ADG] = Suivi_Commandes.[Code ADG]) AND (Suivi_Commandes_Excel.[Code AOI] = Suivi_Commandes.[Code AOI]) AND (Suivi_Commandes_Excel.[Désignation de l'article] = Suivi_Commandes.[Désignation de l'article]) AND (Suivi_Commandes_Excel.[Code ARI13] = Suivi_Commandes.[Code ARI13]) AND (Suivi_Commandes_Excel.[Référence de l'article] = Suivi_Commandes.[Référence de l'article]) AND (Suivi_Commandes_Excel.[Numéro de commande DISU] = Suivi_Commandes.[Numéro de commande DISU]) AND (Suivi_Commandes_Excel.[Numéro OT] = Suivi_Commandes.[Numéro OT]) AND (Suivi_Commandes_Excel.[Numéro DMI] = Suivi_Commandes.[Numéro DMI]) AND (Suivi_Commandes_Excel.[Numéro de commande SCF] = Suivi_Commandes.[Numéro de commande SCF]) AND (Suivi_Commandes_Excel.Réseau = Suivi_Commandes.Réseau) SET Suivi_Commandes_Excel.Réseau = [Suivi_Commandes].[Réseau], Suivi_Commandes_Excel.[Numéro de commande SCF] = [Suivi_Commandes].[Numéro de commande SCF], Suivi_Commandes_Excel.[Numéro DMI] = [Suivi_Commandes].[Numéro DMI], Suivi_Commandes_Excel.[Numéro OT] = [Suivi_Commandes].[Numéro OT], Suivi_Commandes_Excel.[Numéro de commande DISU] = [Suivi_Commandes].[Numéro de commande DISU], Suivi_Commandes_Excel.[Référence de l'article] = [Suivi_Commandes].[Référence de l'article], Suivi_Commandes_Excel.[Code ARI13] = [Suivi_Commandes].[Code ARI13], Suivi_Commandes_Excel.[Désignation de l'article] = [Suivi_Commandes].[Désignation de l'article], Suivi_Commandes_Excel.[Code AOI] = [Suivi_Commandes].[Code AOI], Suivi_Commandes_Excel.[Code ADG] = [Suivi_Commandes].[Code ADG], Suivi_Commandes_Excel.[Date de création commande] = [Suivi_Commandes].[Date de création commande], Suivi_Commandes_Excel.[Date d'expédition] = [Suivi_Commandes].[Date d'expédition], Suivi_Commandes_Excel.[Quantité expédiée] = [Suivi_Commandes].[Quantité expédiée], Suivi_Commandes_Excel.[Date de livraison] = [Suivi_Commandes].[Date de livraison], Suivi_Commandes_Excel.[Date de rupture ligne] = [Suivi_Commandes].[Date de rupture ligne], Suivi_Commandes_Excel.[Quantité en rupture] = [Suivi_Commandes].[Quantité en rupture], Suivi_Commandes_Excel.[Date de retour] = [Suivi_Commandes].[Date de retour], Suivi_Commandes_Excel.[Quantité en retour] = [Suivi_Commandes].[Quantité en retour], Suivi_Commandes_Excel.[Motif de retour] = [Suivi_Commandes].[Motif de retour];
    La table source s'appelle Suivi_Commandes_Excel et la table de destination s'appelle Suivi_Commandes.

    Le fichier excel contient des colonnes vides que Access A appelé F1, F2... lorsque je l'ai attaché.

    Merci

  10. #10
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Points : 32
    Points
    32
    Par défaut
    Un aperçu de la requête en mode création de requête (en PJ). On peut y voir la structure des tables.
    Images attachées Images attachées  

  11. #11
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    Je suis toujours coincé, si quelqu'un aurait une solution...

    Merci

  12. #12
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 552
    Points
    24 552
    Par défaut
    bonjour,
    Je suis étonné que tu n'ais pas de numero de bon de commande au lieu de créer cette multitudes de dépendances.

    Je pense que cela doit nuire à la requête pour faire la correspondance.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  13. #13
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Points : 32
    Points
    32
    Par défaut
    Ok, donc à ton avis je devrai faire les dépendances seulement entre les colonnes qui seront susceptibles à une modification dans le fichier Excel donc dans la table.

    Est-ce que comme ça ça va marcher?

    Merci

  14. #14
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2008
    Messages : 60
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    Voila ce que j'ai fait: j'ai supprimé toute les dépendances et laissé la relation entre les numéros de commande des deux tables (liée et Access).

    Malheureusement, ça ne fonctionne pas, j'obtiens le message suivant lorsque j'exécute la requête: "Le champ '(expression)' n'est un champ pouvant être mis à jour."

    En fait il ne me reste plus que ça à faire dans l'appli que je suis en train de créer, après j'ai terminé.

    Merci

  15. #15
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 552
    Points
    24 552
    Par défaut
    Bonjour,

    Dans un premier temps fait la relation entre les 2 tables dans une requete de sélection.

    Lorsque c'est fait teste le premier champ avec la fonction iif sur la première ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    expr1:iif(tableA.champ<>tableB.champ;tableA.champ)
    ou TableA représente la table contenant le champ éventuellement modifié.

    TableB étant celle à mettre à jour dans le cas ou la valeur est différente.

    Une fois que tu obtiens les bonnes valeurs tu peux la transformer en requete mise à jour. Note que tu ne peux pas mettre à jour des enregistrements contenus dans une feuille Excel.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/08/2012, 19h58
  2. [AC-2007] Mise à jour du chemin d'une table liée
    Par damsmut dans le forum VBA Access
    Réponses: 28
    Dernier message: 22/04/2010, 10h33
  3. [requete]mise à jour entre table
    Par Greg84 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 19/07/2006, 15h18
  4. Réponses: 2
    Dernier message: 07/06/2006, 14h13
  5. Mise à jour entre tables...
    Par brisbris dans le forum Access
    Réponses: 11
    Dernier message: 02/05/2006, 13h54

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