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 :

remplir une étiquette de formulaire avec la description du champ


Sujet :

Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut remplir une étiquette de formulaire avec la description du champ
    Bonjour,

    J'ai créé une table qui me permet d'évaluer des stagiaires. Dans cette table il y a un champ pour le nom du stagiaire 1, un champ pour son prénom et la même chose pour un stagiaire 2, etc. Et pour chacun des stagiaires j'ai plusieurs champs avec mes critères d'évaluation.
    Pour remplir cette table je mets en place un formulaire.
    Et je souhaite faire et je ne sais pas comment le faire :

    1) Faire en sorte que lorsque je rempli le prénom du stagiaire 1(récupéré dans une autre table "apprenants" via une liste déroulante) le nom de ce même stagiaire se remplisse automatiquement. pareil pour le 2. et ainsi de suite.

    2)Et surtout je souhaite afficher la description d'un champ au lieu du nom de celui-ci dans l'étiquette sans avoir à le retaper à chaque fois.
    En effet pour mieux expliquer : lorsque j'ajoute des champs existants dans le formulaire, Access créé deux zones distinctes, une étiquette avec le nom du champ (équivalente à une zone de texte) et une deuxième qui est la zone de remplissage a proprement dit. C'est donc dans la première que je souhaite récupéré la description du champ (qui est renseigné dans la table) et non son nom. je n'ai pas trouvé comment faire à part tout réécrire ou faire des copier coller avec toutes les sources d'erreur que cela engendre, surtout que le texte en question peut être long.

    Je vous remercie pour vos réponses.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Bonjour.

    Les étiquettes ne sont pas des contrôles "dynamique", si tu besoin de données variables, il est plus facile de les remplacer pour des zones de texte (il y a une fonction dans le menu contextuel pour faire cela).
    Tu peux leur donner l'aspect d'étiquette et en les rendant inactives et verrouillées, l'utilisateur n'y verra que du feux,

    Après il te faut définir une fonction publique pour récupérer la propriété description de ton champ :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    public function LireDescription(prmNomTable as string, prmNomChamp as string) as string
         on error goto err_LireDescription
     
         dim result as string:result=prmNomChamp 'Valeur par défaut
     
          dim db as dao.database:set db=currentdb
          dim t as dao.tabledef:set t=db.tabledefs("prmNomTable")
          dim f as doa.field: set f=t.fields(prnNomChamp)
    10  result=f.properties("Description")
    RepriseErreurDescription:
          set f=nothing
          set t=nothing
          db.close:set db=nothing
     
    Exit_LireDescription:
          LireDescription=result
          exit function
     
    Err_LireDescription:
          select case err.number
             case 438 'Pas de description
                 if erl=10 then
                     resume RepriseErreurDescription
                   else
                     call err.raise(err.number)
                 end if
     
           case else
             call err.raise(err.number)
        end select
     
        resume exit_LireDescription
     
    end function
    enfin il faut mettre dans la source du contrôle quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =LireDescription("NomTaTable"; "NomTonChamp")
    Ceci dit et me basant sur ton énoncé, je pense que tu n'as pas utilisé la structure recommandée pour ce genre de données.
    De ce que je comprends tu as une table du type :
    • NoStage
    • NomStagiaire1
    • NomStagiaire2
    • NomStagiaire3


    La structure recommandée est d'avoir :
    • NoStage
    • NomStagiaire


    avec une ligne par stagiaire.
    cela permet de gérer un nombre variable et presque infini de stagiaires SANS avoir à changer les écrans ou les tables.
    Note toute fois que cela peut rendre la saisie un peu pénible pour les gens qui ont l'habitude des tableaux à 2 dimensions du type des feuilles Excel.

    A+

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    marot_r merci pour ta réponse mais je débute dans access et je ne maîtrise pas du tout le code.

    par contre pour essayer d'éclaircir ma demande
    j'ai deux tables :
    table 1 : "apprenant" ; elle est constitué du champ N°(clé primaire), NOM, PRENOM, DATE_DE_NAISSANCE, ADRESSE, et quelques autres informations concernant chaque apprenant
    table 2 : "evaluation" qui contient entre autre le champ PRENOM_S1, NOM_S1, PRENOM_S2, NOM_S2, COMPETENCE1_S1, COMPETENCE2_S1, ... , COMPTENCE1_S2, COMPETENCE2_S2, ...
    Lors des évaluations les stagiaires passent en binôme, chaque numéro d’évaluation correspond à un passage d'un binôme. S1 correspond au stagiaire 1 du binôme (pris dans la liste de l'ensemble des apprenants, table apprenant) et S2 au deuxième (pris également dans l'ensemble des apprenants, table "apprenant") .

    La première idée c'est qu'en remplissant le champ PRENOM_S1 (liste déroulante d'après table "apprenant") le champ NOM_S1 se rempli automatiquement avec la valeur correspondante de la table "apprenant". Et pareil pour S2

    La deuxième c'est d'afficher la description des COMPETENCEx_Sy devant les cases des valeurs dans le formulaire. C'est plus parlant que COMPETENCE_1 etc. Je cherchais donc comment récupérer cette valeur pour la mettre dans les étiquettes ou zone de textes si c'est mieux. Comme le code je ne connais pas du tout, existe t'il un autre moyen que celui que tu décris? Sinon comment faut-il faire pour intégrer ton code.

    Merci de ton aide.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Bonjour, j'avais mal compris ton besoin et ma solution n'est PAS du tout applicable à ton problème.

    Il conviendrait de changer la structure de ta table [evaluation] pour

    NoS1, NoS2, COMPETENCE1_S1, COMPETENCE2_S1, ... , COMPTENCE1_S2, COMPETENCE2_S2, ...

    Comme cela tu as juste a faire une liste déroulante pour sélectionner ton apprenant, le SQL devrait ressembler à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select [apprenant].[No], [apprenant].[Prenom] & " " & [apprenant].[Nom] form [apprenant]
    order by [apprenant].[Prenom], [apprenant].[nom]
    avec 2 colonnes et les largeurs de colonnes 0;15 et largeur de liste à 15.44.


    Sinon idéalement il faudrait changer la structure de ta BD pour un truc du genre :

    tblEvaluation
    NoEvaluation
    NoS1
    NoS2
    Autres infos spécifiques à l'évaluation (ex : date)

    • En relation avec tblApprenant
    • En relation avec tblApprenant_1 (ajouter la taable apprenant une seconde fois à la fenètre des relations)


    tblCompetance
    NoCompetence
    Description

    tblEvaluationCompetence
    NoEvaluationCompetence
    NoCompetence
    ValeurS1
    ValeurS2

    • en relation avec tblEvaluation
    • en relation avec tblCompetence


    Avec cette structure tu peux avoir autant de compétence que tu en veux pour une évaluation et tu n'est pas obligé de faire des acrobaties pour afficher les information.

    Les écrans pourraient se présenter ainsi :

    Formaire Evaluation
    No, DateEvaluation, PrenomNomS1, PrenomNomNoS2

    Sous-Formulaire Evaluation competence
    NoEvaluationCompetence, Decsription Competence, Valeur Competence S1, Valeur Competence S2

    A+

  5. #5
    Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Je te remercie pour ta réponse. Je n'aurais jamais pensé à découper en plusieurs tables comme cela, je vais essayer, mais pour la récupération d'infos ça semble plus simple. Mais comme je n'ai pas fini la DB je risque d'avoir d'autres soucis lors de l'interprétation des évaluations, mais ça c'est une autre histoire (on verra à ce moment)

Discussions similaires

  1. [AC-2007] Remplir une feuille de données avec recordset ADO
    Par Peper89 dans le forum VBA Access
    Réponses: 5
    Dernier message: 17/06/2010, 11h49
  2. Réponses: 0
    Dernier message: 13/06/2010, 22h44
  3. Remplir une chaine de caractères avec des 0 dans un SELECT
    Par phamdac dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 04/08/2009, 23h04
  4. Réponses: 1
    Dernier message: 22/05/2008, 14h51
  5. Réponses: 6
    Dernier message: 23/04/2007, 15h21

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