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 :

Récupérer une valeur d'une sous-Table dans la table mère [AC-2010]


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 10
    Points
    10
    Par défaut Récupérer une valeur d'une sous-Table dans la table mère
    Bonjour,

    Je suis débutant en access. J'ai réaliser un projet sous EXCEL permettant de gérer les contrats d'une assistante maternelle.
    Afin de renouveler le défi, j'ai décidé de créer la même chose en ACCESS.

    J'ai donc creer plusieurs table :
    tbl_horaire :
    Elle contient les horaires d'une semaine avec certain calcul (total du nombre d'heure dans la semaine en centième d'heure). Elle dispose d'une clé primaire unique (ID_horaire).
    tbl_info_ctra1 :
    elle contient toutes les infos du contrat. j'ai un champs "ID_hr_sem_A" qui correspond à "ID_horaire". Et j'ai un autre champs "tot_sem_A". J'aimerai récupérer la valeur du champs "tot_cent_sem" de la table "tbl_horaire" correspondant a "ID_hr_sem_A".

    J'ai essayer de creer une requete mais ACCESS me la refuse en me disant : erreur de synthaxe.

    SELECT tbl_horaire.ID_horaire, tbl_horaire.tot_cent_sem
    FROM tbl_horaire
    WHERE (((tbl_horaire.ID_horaire)=[tbl_info_ctra1].[Id_hr_sem_A]));

    Merci de votre aide...

    Cordialement,

    Wilfried

  2. #2
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    WSAL74,

    Dans ton From il te manque la référence de ta table Contrats

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT tbl_horaire.ID_horaire, tbl_horaire.tot_cent_sem
    FROM tbl_horaire, tbl_info_ctra1
    WHERE (((tbl_horaire.ID_horaire)=[tbl_info_ctra1].[ID_hr_sem_A]));
    mais ne serait-il pas plus judicieux d'utiliser une requête avec jointure (plus performant et mieux adapté)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT tbl_horaire.ID_horaire, tbl_horaire.tot_cent_sem
    FROM tbl_horaire INNER JOIN tbl_info_ctra1 ON tbl_horaire.ID_horaire = tbl_info_ctra1.ID_hr_sem_A;
    Cette requête renvoie le même résultat mais te permet également si nécessaire d'utiliser des jointures de type left, right ou inner


    JimBoLion

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Salut JimBoLion

    Merci pour ta réponse. Je n'ai pas utilisé "l'union" car je ne connais pas....

    PAr contre, je vient de tester ta 2ème requête et il me renvoie :

    "the syntax of subquery in this expression is incorrect. Check the subquery's syntax and enclose the subquery in parentheses."

    si je mets des parantèse avant et après il me dits : "Expression not supported for conversion"...

    Désolé...

    Cordialement,

    Wilfried

  4. #4
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    WSAL74,

    Je viens de recréer une structure identique à la tienne et cela fonctionne parfaitement !

    Ton problème ne viendrait-il pas du choix de type de données ? Les clés de type étrangère sont en format entier long

    Regarde ici la base exemple et tu trouveras j'en suis sûr ton erreur... tu as deux requêtes une avec l'union l'autre avec le where (dans le qbe)

    Exemple.zip

    JimBoLion

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Re,

    Je viens de regarder tes deux exemples et je pense que ma demande était mal formuler....

    Pour reprendre ton exemple :

    Dans la table tbl_info_ctra1, je voudrais que le champs tot_sem_A soit mis a jour automatiquement avec la valeurs contenue dans l'autre table correspondant a l'ID sélectionner. Et ce afin de pouvoir effectuer des calcul après.

    Il y as pas mal de calcul "simple" a réaliser :
    ex :
    (nb_hr_semaine * nb_sem_trav * tx_hr)/12

    et je ne voie pas comment faire sans récupérer dans la même table toutes les infos.....

    A moins biensur qu'il existe un truc "magique" qui permet de calculer des choses en récupérant des éléments de plusieurs table......

    Car je vais utiliser des Form.

    J'ai déjà trouvé comment afficher des sous-Form (saisi des HR) et des éléments d'autre table (indication des tarifs et autre).



    Merci,

    Wilfried

  6. #6
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    WSAL74

    et je ne voie pas comment faire sans récupérer dans la même table toutes les infos.....

    A moins biensur qu'il existe un truc "magique" qui permet de calculer des choses en récupérant des éléments de plusieurs table......
    En utilisant les jointures (c'est pas magique mais tout simplement efficace) tu peux afficher les informations émanant de plusieurs tables à partir du moment ou tu possèdes un identifiant commun (généralement clé primaire et étrangère).

    Sinon et si tu souhaites mettre à jour le champ d'une autre table, il te faut utiliser les requêtes de type mises à jour. En utilisant le QBE (la requête en mode création sous Access) tu pourras valider la syntaxe de ta requête (en haut dans le ruban tu peux spécifier ton type de requête).

    JimBoLion

  7. #7
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    RE,

    J'utilise deja les relations pour pouvoir lier mes horaires a mon contrat. Je te joins le fichier au cas ou...


    gestion garde ASSMAT V1.0.zip

    Par contre je n'arrive pas a lier le champs tot_cent_HR car il est de type calculer (si j'ai bien compris)..

    A+ et bon appetit...

  8. #8
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    WSAL74,

    Peux tu me donner quelques explications supplémentaires.

    Dans la table tbl_info_ctra1, je voudrais que le champs tot_sem_A soit mis a jour automatiquement avec la valeurs contenue dans l'autre table correspondant a l'ID sélectionner. Et ce afin de pouvoir effectuer des calcul après.
    Je ne vois pas de champ tot_sem_A dans la table tbl_info_ctra1 ?

    Ta requête doit t-elle mettre à jour les champs à partir de ton formulaire ?

    Ou se trouve ce champ calculé ?

    Merci

  9. #9
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    WSAL74,

    Voilà la solution dans une requête nommée Requete_MAJ_JimBoLion

    J'ai rajouté dans ta table tbl_info_ctra1 le champ tot_sem_A introuvable


    JimBoLion
    Fichiers attachés Fichiers attachés

  10. #10
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Re,

    Si je devait ecrire du VBA sous excel en faisant analogie sheets= table et range=champs , voila ce que j'ecrirai :

    =(worksheets("tbl_horaire").range("H12").value*worksheets("tbl_assmat").range("D11")*worksheets("tbl_info_ctra1").range("E21"))/12


    worksheets("tbl_horaire").range("H12").value corresponderai a

    SELECT [tot_cent_horaire] FROM [tbl_horaire]! where [tbl_horaire]![ID_horaire]=[tbl_info_ctra1]![ID_horaire_A]

    worksheets("tbl_assmat").range("D11") a

    SELECT [tx_hr] FROM [tbl_assmat]! where [tbl_assmat]![ID_asmat]=[tbl_info_ctra1]![ID_assmat]

    et worksheets("tbl_info_ctra1").range("E21") a [nb_sem_A] de la fiche active....


    Le champs calculer est le dernier de la table : tbl_horaire

    Merci,

    Wilfried


    Desole je n'avait pas vu ton second message.... Je vais regarder...

  11. #11
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    MERCI......

    C'est super cela fonctionne. Je vais essayer de comprendre ta requête, et après je vais essayer de l'adapter a mes autres besoins.... et il ne me restera plus qu'as trouver comment la lancer après chaque changement de valeurs du combobox de ma form.... surement en vba...

    encore merci

    A+

  12. #12
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    WSAL74,

    n'hésites pas et n'oublie pas de mettre résolu.


    Bon courage à toi

    JimBoLion

  13. #13
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Effectivement j'allais oublier....

    Encore une question en passant, le champs que tu as creer, c'est la seul modif? quand j'essaye d'adapter ta requete ( je l'ai refaite sur mon fichier) elle me dit qu'il n'y as pas de champs a mettre a jours....
    Je vais continuer a creuser tous cela.

    Encore merci.

  14. #14
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    WSAL74,

    Oui c'est la seule modif !

    Etant donné qu'il n'y a pas de contrôle sur l'existence d'une information dans le champ, je suis surpris de la réponse !

    JimboLion

  15. #15
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Bon je suis vraiment un boulet........

    pour modifier la requetes je me suis mal debrouiller en passant en mode sql j'ai vu que je faisais appel au mauvais champs... maintenant cela fonctionne. Je vais passer a l'etape du calculs.....

    Encore merci.

    Wilfried

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. Réponses: 4
    Dernier message: 28/02/2014, 15h05
  3. [CR XI] Récupérer la valeur d'une formule d'un sous état
    Par duduma dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 16/04/2013, 15h01
  4. [WD16] Récupérer la valeur d'une colonne d'une table d'une ligne précise
    Par elghers_hocine dans le forum WinDev
    Réponses: 16
    Dernier message: 06/05/2011, 18h11
  5. Réponses: 6
    Dernier message: 31/07/2009, 17h49

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