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

Modélisation Discussion :

Créer un champ en fonction d'un autre d'une autre table


Sujet :

Modélisation

  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Par défaut Créer un champ en fonction d'un autre d'une autre table
    Bonjour,

    Voici mon problème :

    J'ai une table table1 avec un champ Protocole. Je souhaite créer une table table2 avec le champ protocole listant tous les Protocoles DISTINCTS présents dans la tables tables1.

    Et bien évidemment je souhaite que lorsqu'un nouvel enregistrement se fait dans tables1 avec un nouveau Protocole pas encore présent dans table2, et bien que cette dernière se mette à jour et rajoute une ligne à table2 avec ce protocole !!!!

    j'ai trifouillé un peu, je ne connais pas bien Access ... J'ai essayé de faire une requete de type mise a jour etc mais pfff j'arrive pas bien.
    J'ai aussi essayé de faire une macro suite à Insertion dans table1 avec pour effet une erreur, et quand j'insère un enregistrement dans table1 ca ne me fait rien donc ca a pas l'air d'etre ca
    Et aussi je ne sais pas bien quelle relation je dois mettre entre table1 et table2 : si je dois lier leur clef primaire ou si je dois les lier sur leur champ protocole ?

    Merci pour toute l'aide que vous pourrez m'apporter

  2. #2
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Par défaut
    Bonjour Nenette69 (),

    Juste pour bien comprendre, revenons à la conception de tes tables.
    Citation Envoyé par Nenette69
    J'ai une table table1 avec un champ Protocole. Je souhaite créer une table table2 avec le champ protocole listant tous les Protocoles DISTINCTS présents dans la tables tables1.
    ==> veut dire que 1 même protocole se retrouve plusieurs fois dans Table1 et que tu souhaites que Table2 soit la liste des protocoles distincts (avec 1 ligne par protocole).

    Souhaites-tu, en final, créer une liste déroulante des protocoles en saisie des informations de Table1 ?

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Par défaut
    Citation Envoyé par Richard_35 Voir le message
    Bonjour Nenette69 (),

    Juste pour bien comprendre, revenons à la conception de tes tables.
    ==> veut dire que 1 même protocole se retrouve plusieurs fois dans Table1 et que tu souhaites que Table2 soit la liste des protocoles distincts (avec 1 ligne par protocole).
    oui c'est bien ça !

    Citation Envoyé par Richard_35 Voir le message
    Souhaites-tu, en final, créer une liste déroulante des protocoles en saisie des informations de Table1 ?
    En fait le but c'est que si un jour on ajoute un protocole qui n'a jamais été mis dans table1, ma table2 le rajoute automatiquement dans sa liste de protocole et ainsi je peux compléter à la main dans table2 les infos relatives à ce protocole !

    J'ai bien essayé de créer une requete d'ajout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    INSERT INTO table2 ( Protocole )
    SELECT DISTINCT table2.Protocole
    FROM table1 INNER JOIN table2 ON table1.ID = table2.N°;
    Mais quand j'execute cette requete cela me met une erreur qui me parle d'erreur de conversion de type, de violation de clé, de violation de verrou et de violation de règle de validation. Rien que ca
    Je pense qu'il doit y avoir un problème au niveau de mon FROM et surtout de la relation que je mets entre table1 et table2 ...

  4. #4
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Par défaut
    Citation Envoyé par Nenette69
    En fait le but c'est que si un jour on ajoute un protocole qui n'a jamais été mis dans table1, ma table2 le rajoute automatiquement dans sa liste de protocole et ainsi je peux compléter à la main dans table2 les infos relatives à ce protocole !
    ==> ne serait-il pas mieux de gérer une table des protocoles proposées en liste déroulante dans Table1 ?

    Ce qui donnerait (souligné=clé primaire, #=clé étrangère) :
    Protocole(IdProtocole, LibelleProtocole, ...) ==> LibelleProtocole récupéré de Table1 ;
    Table1(IdTable1, #IdProtocole, ...) ==> libellé copié dans Protocole et stockage de l'Id à sa place.
    avec :
    Protocole -1---∞- Table1
    Ainsi, la gestion des protocoles serait externalisée.

  5. #5
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Par défaut
    Hmm oui ca pourrait etre une bonne solution !

    Seulement, j'importe mes données Excel vers Access, et j'aimerai ne pas toucher ce qui se rapporte à ces importations.
    En gros, mes lignes de tables1 sont importées, avec le nom du protocole directement. Faudrait modifier mon code d'importation et ca je veux pas trop

  6. #6
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Par défaut
    En gros, j'aimerai que lorsque j'importe des enregistrement dans table1, il y ai une requete de mise à jour qui se lance et qui me liste dans table2 tous les protocoles présents dans table1.

    Du coup pour le moment j'essaye d'écrire cette fameuse requete mais j'ai des erreur de violation de clé etc ...

  7. #7
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Par défaut
    J'ai réussi a faire une requete d'ajout de ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO table2 ( Protocole )
    SELECT DISTINCT Protocole
    FROM table1;
    Le problème est que cela me rajoute les lignes à la suite alors que moi je veux ajouter seulement le protocole qui existe dans table1 mais pas table2.

    Donc j'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO table2 ( Protocole )
    SELECT DISTINCT Protocole
    FROM table1
    WHERE table1.Protocole NOT IN ( SELECT table2.Protocole FROM table2 );
    Mais Access aime po bien et se fige
    J'avance doucement doucement ...


    EDIT : En fait c'est bon pour la requete ca fonctionne

    Du coup je souhaite executer cette requête lorsque j'importe des données pour mettre à jour ma table2, j'ai essayé un DoCmd.OpenQuery Requête5 mais ca me dit que cette commande necessite un nom Requete, or ma requete s'appelle bien Requête5 :/

  8. #8
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Par défaut
    Citation Envoyé par Nenette69
    j'ai essayé un DoCmd.OpenQuery Requête5 mais ca me dit que cette commande necessite un nom Requete, or ma requete s'appelle bien Requête5
    ==> je ne connais pas VBA et ne pourrai donc pas t'aider.

    Mais nul doute qu'un forumeur bienveillant s'y attellera.

  9. #9
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Par défaut
    J'ai trouvé dans un tuto :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Dim qdf As DAO.QueryDef 
    Dim rcs As DAO.Recordset 
    
      ' Référence à la requête 
    Set qdf = CurrentDb.QueryDefs("NomQuery") 
    
      ' Code qui utilise qdf 
      ' Par exemple 
    'qdf.Parameters("NomParamètre") = valeur     '<== si requête paramétrée 
    qdf.Execute                                 '<== si requête action 
    Set rcs = qdf.OpenRecordset                 '<== pour travailler sur les données 
    
    
      ' Libération de la référence 
    Set qdf = Nothing
    Et j'ai une erreur sur la ligne rouge : Erreur "3219" opération non valide.

    Il est écrit qu'il est nécessaire d'avoir la référence : Microsoft DAO 3.x Object Library.
    Or moi j'ai déjà Microsoft DAO 14.x Object Library d'activé et je ne peux pas activé la 3.6 si la 14 est activé et je ne peux pas désactiver la 14 oO



    Et je tiens à te remercier pour ton aide Richard

  10. #10
    Membre averti
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Par défaut
    C'est bon problème résolu merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/07/2012, 23h01
  2. sélectionner une autre fois une autre image
    Par slaima15 dans le forum Interfaces Graphiques
    Réponses: 0
    Dernier message: 19/08/2010, 18h46
  3. Réponses: 1
    Dernier message: 23/07/2007, 10h47
  4. Réponses: 5
    Dernier message: 30/12/2006, 15h35
  5. Créer un champ en fonction d'un fichier excel
    Par nberthonneau dans le forum Access
    Réponses: 8
    Dernier message: 03/11/2004, 18h02

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