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 entre tables...


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Mise à jour entre tables...
    Salut à tous,
    Je voudrai savoir comment on fait avec access dans le cas de figure suivant :
    j'ai 2 tables :

    1 pour les "ouvriers" (nom, prénom, chantier)
    1 autre "chantier" (nom du chantier, adresse).

    J'ai défini le champs "chantier" des ouvrier de manière à ce que, quand je rentre un nouvel ouvrier, il y ait une liste des chantiers(nom du chantier) déjà rentré dans la table "chantier".

    çà marche très bien mais j'ai remarqué que si je modifie le "nom d'un chantier" dans la table "chantier", meme si la liste des chantiers auxquels je peux affecté un ouvrier dans la table "ouvriers" est bien mise à jour, par contre, il n'y pas de mise à jour automatique des champs "chantier" déjà rentrés. Je me vois contraint de mettre à jour manuellement tous les champs "chantier" de tous les ouvriers concernés...

    Comment remédier à cela?
    Merci d'avance pour votre aide!!!
    A+

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    pardonne moi mais ta modélisation me paraît fausse ...

    pour t'aider voici un cours : http://sqlpro.developpez.com/cours/modelisation/merise/
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Ma modélisation est un exemple pour poser la question :
    si je change la valeur d'un champ dans une table(chantier) et que la valeur de ce champ est utilisée dans une autre table(ouvrier), comment updater toutes les valeurs dans cette seconde table?

    avec mysql, çà donnerai quelque chose du genre à chaque fois que je modifie le nom d'un chantier dans la table "chantier" :
    UPDATE ouvrier.chantier SET chantier='piscine' WHERE chantier='pissine'
    piscine en pissine, c'est un exemple

    Me suis-je fait comprendre?

  4. #4
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 136
    Points : 163
    Points
    163
    Par défaut
    bonjour,

    je suggère de vérifier les relations entre tes tables,
    notamment si les case "intégrité referentielle" et "mise àjour en cascade" sont bien cochées

  5. #5
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour,

    Si ta table des chantier a une clé comme un numauto, tu as le choix dans la table des ouvriers de stocker soit la clé dorrespondant au chantier choisi, soit son nom.
    Si tu stockes le nom, une mise à jour des noms de chantier ne mettra pas à jour les saisies précédentes. Mais si tu stockes la clé, la mise à jour de la table des chantiers fera la mise à jour que tu souhaites.

    Bon courage,

    pgz
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci pour vos conseils
    effectivement, je n'avais défini aucune relation entre les tables...

    J'ai donc défini comme clé primaire "nom du chantier" dans la table "chantier" et créé une relation de champs avec le champ "chantier" de la table "ouvrier" en activant les case "intégrité referentielle" et "mise àjour en cascade" comme l'avait suggéré seacat et tout fonctionne comme je le souhaite si je change le nom d'un chantier, automatiquement ce changement prendra également effet dans le champs "chantier" de la table "ouvrier".....

    oui mais...

    En faisant le test de supprimer un record dans la table "chantier", j'ai message me disant que c'est impossible puisque la table "chantier" contient des record corrélés... or si j'active pour la relation la case "éliminer lesrecord corrélés à la chaine", non seulement il m'élimine le chantier, mais en plus il m'élimine tous les record de la table "ouvrier" ou était affecté le chantier corrélé.
    Moralité, si j'élimine un chantier, çà m'élimine aussi des ouvriers...

    Comment devrais-je faire?

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    un p'tit coup de pouce ?

  8. #8
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 136
    Points : 163
    Points
    163
    Par défaut
    Salut,

    tout ceci est relativement logique
    si tu supprimes un champ sans faire suivre la suppression dans les tables ou cet enregistrement a une correspondance,
    tu finirais par te retrouver avec des enregistrements orphelins

    As tu absolument besoin de renommer/supprimer des enregistrements dans la table chantier ?

    est-il necessaire de mettre le nom du chantier dans la table ouvrier ?

    je pense qu'on pourrait mieux t'aiguiller en ayant la description de tes tables
    A+

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Salut seacat et merci pour ton aide

    et bien oui j'ai besoin de renomer ou supprimer des chantiers, si par exemple j'ai un chantier qui se finis, je souhaite supprimer son record et me retrouver avec des champs blancs dans la table ouvrier et ainsi savoir lesquels sont sans bouleau pour leur réaffecter un autre chantier... par exemple mais d'une manière générale il doit bien y avoir un truc du genre :

    if [DELETE chantier where nom_du_chantier="chantier_piscine"]
    UPDATE ouvrier.chantier SET chantier='0' WHERE chantier='chantier_piscine'

    non ?
    A+

  10. #10
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 47
    Points : 45
    Points
    45
    Par défaut
    Salut,


    Peut-être dois tu prévoir juste une jointure de type externe entre la table ouvrier et chantier (dans la fenêtre 'relations', clic droit sur le lien + modifier une relation + clic sur type de jointure).

  11. #11
    Membre averti Avatar de mcdotta
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 292
    Points : 324
    Points
    324
    Par défaut
    Hello,


    En fait, ta modélisation me paraît incorrect.

    D'après ton problème, il te faut trois tables :

    tblChantier
    NoChantier Unique
    NomChantier

    tblOuvrier
    NoOuvrier Unique
    NomOuvrier
    PrénomOuvrier
    ...

    tblOuvrierChantier
    NoChantier ->Liaison vers la table Chantier-NoChantier
    NoOuvrier ->Liaison vers la table Ouvrier-NoOuvrier
    ....

    La saisie de l'occupation des ouvriers et de leur affectation sur tel ou tel chantier se fait dans la table tblOuvrierChantier.

    Si tu supprimes un Chantier, les enregistrements connexes sont supprimés dans la table tblOuvrierChantier mais non dans la table Ouvrier...

    Voilà mon petit coup de pouce du samedi matin...

  12. #12
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 136
    Points : 163
    Points
    163
    Par défaut
    hello,

    je rejoins mcdotta sur la question de fond qui touche à la conception de la base

    Une base de données est faite pour stocker des informations pas pour les supprimer à tout bout de champ

    ainsi par exemple comment peux tu extraire de ta base des infos sur l'activite de tes ouvriers sur une annee ?

    Je verrais asse bien une table chantier avec un champ date ouverture, un champ date cloture, un champ n° ouvrier (= champ index de la table ouvrier)

    Comme ça tu gardes l'information relative à l'activite et tu peux tres bien faire une requete listant les ouvriers sans affectation.

Discussions similaires

  1. [AC-2010] Requete mise à jour entre table et requete
    Par Mut dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/06/2012, 09h55
  2. Mise à jour entre table liée et table access
    Par Sprsrini dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 30/09/2008, 20h47
  3. Mise à jour de tables entre deux serveurs SQL
    Par mattyeux dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 21/03/2007, 09h58
  4. [requete]mise à jour entre table
    Par Greg84 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 19/07/2006, 15h18
  5. Pb de mise à jour entre 2 tables
    Par tissard dans le forum Requêtes
    Réponses: 5
    Dernier message: 19/07/2006, 14h12

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