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 :

Relier un formulaire à une source de données [AC-2019]


Sujet :

Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2022
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2022
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Relier un formulaire à une source de données
    Bonsoir à tous,
    Débutant sous access, je rencontre des soucis au fur et a mesure de l'avancement de mon projet, j'essaie de les régler par moi même en fouillant le forum et le net mais là je sèche depuis hier.
    J'ai 2 tables ( membres et catégorie d'age), 2 requêtes( calcul de l'âge et attribution de la catégorie d'age) et un formulaire. J'essaie vainement d'afficher dans le formulaire dans une zone de texte, l'age calculé dans la requête 1 et la catégorie attribuée dans la requête 2. Si j’exécute les requêtes en mode création, les champs sont bien mis à jour et j'obtiens les bonnes valeurs, malheureusement dans le formulaire je n'y arrive pas, j'obtiens #nom?
    Quelqu'un aurait une idée de ce qui peut bien manquer ?
    Merci d'avance
    Patrick

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 840
    Points : 14 944
    Points
    14 944
    Par défaut
    bonsoir,
    je pense à un problème de syntaxe, en général #nom? est affiché lorsque la propriété source contrôle contient le nom d'un champ utilisé pour nommer ce même contrôle:
    par exemple:
    Nom: Texte1
    Source contrôle: = [Texte1]+[Texte2]
    mais il peut y avoir d'autre raisons mais sans code ou une impression d'écran, difficile de donner une réponse.

    Par ailleurs, 2 requêtes pour un formulaire cela en fait un de trop, sauf si il y a un sous-formulaire dans le circuit

  3. #3
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2022
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2022
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Bonsoir Tee Grandbois et merci pour ta réponse,
    en fait la source controle est une expression générée par le générateur d'expression ( je ne sais pas si je m'explique clairement) donc je met ci dessous des copies d'écran. Nom : 1.png
Affichages : 116
Taille : 43,3 KoNom : 2.png
Affichages : 117
Taille : 74,1 KoNom : 3.png
Affichages : 118
Taille : 35,7 KoNom : 4.png
Affichages : 120
Taille : 30,2 Ko
    c'est certain qu'il y a une meilleure manière de si prendre mais je découvre access et sa complexité

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 840
    Points : 14 944
    Points
    14 944
    Par défaut
    on ne peut pas faire référence à une requête comme cela dans un formulaire (même si le générateur d'expression laisse penser que c'est possible).
    Il y a plusieurs possibilités, la première, pas la plus simple mais la plus logique, c'est de modifier tes 2 requêtes afin de les utiliser dans la requête source du formulaire F_Fiche_Membre :dans ta requête Rqt_CalculAge, tu supprimes les champs Nom, Prénom et DateNaissance qui sont inutiles et tu ajoutes le champ ID.

    Tu ajoutes la requête Rqt_CalculCat à la requête source de ton formulaire (si c'est la table que tu utilises, il faudra donc créer une requête) et ensuite tu fais une jointure entre la table et la requête par le champ ID.
    tu sélectionnes tous les champs de la table [Liste des coureurs] et tu sélectionnes les champs AgeCalc et Catégorie de la requête.
    Les champs sont maintenant directement accessibles dans le formulaire, tu peux donc choisir la source contrôle de ta zone de texte Texte198 (autant la renommer AgeCalc, en passant c'est plus parlant).

    Sinon la seconde solution, la plus simple, c'est d'utiliser une fonction de domaine, mais il faudra quand même ajouter le champ ID à ta requête (Rqt_CalculCat ou Rqt_CalculAge) c'est la clé primaire et elle est là pour ça, autant l'utiliser:
    dans source contrôle de Texte198 tu mets ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RechDom("AgeCalc";"Rqt_CalculCat";"ID=" & ID)
    dans "ID=" & ID le premier ID est celui de la requête, le second est celui du formulaire, le = permet l'équijointure.
    Attention: Nom est un mot réservé (Name en anglais), il peut générer des erreurs inattendues car c'est une propriété de beaucoup d'objets notamment dans l'interface de création des formulaires et états.
    Il serait préférable de le renommer dans la table: NomCoureur, par exemple

  5. #5
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 274
    Points : 6 583
    Points
    6 583
    Par défaut
    Salut
    A signaler
    Calcul date validité certif méd.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    =AjDate("aaaa"; 1; [Texte54])-1
    ou
    =AjDate("aaaa"; 1; [Date d'édition du certificat])-1
    Calcul âge
    Votre calcul en l'état devrait retourner une erreur, la fonction vb DiffDate n'ayant que 3 arguments et il y en a 5 !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DiffDate("aaaa";[DateNaissance];Date();0;1)
    versus
    DiffDate("aaaa";[DateNaissance];Date())

  6. #6
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2022
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2022
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Bonjour à tous,
    tout d'abord merci à vous deux d'avoir pris du temps pour m'aider, c'est sympa !!
    Alors voici les news des avancées :
    J'ai suivi les conseils de TeeGrandbois et après quelque tâtonnement cela fonctionne comme vous pourrez le voir dans la capture écran ci dessous.
    Pour répondre à hyperion13, un certificat médical en course à pied est valable un an à partir de sa date d'édition donc date édition + 365 me convient bien et fonctionne, pour le calcul de l'age tout roule aussi. Donc un grand merci à vous deux.

    Par contre, lorsque je suis sur un nouvel enregistrement et que je n'ai pas encore renseigné la date de naissance dans les deux cases "Age" et "categorie" j'ai un message "#erreur" qui s'enlève si je rentre une date de naissance, y aurait il un moyen de faire disparaitre ce message ?
    Merci d'avance et bonne journée
    PatNom : 1.png
Affichages : 85
Taille : 42,5 Ko

  7. #7
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 840
    Points : 14 944
    Points
    14 944
    Par défaut
    bonjour,
    J'ai suivi les conseils de TeeGrandbois et après quelque tâtonnement cela fonctionne comme vous pourrez le voir dans la capture écran ci dessous.

    Par contre, lorsque je suis sur un nouvel enregistrement et que je n'ai pas encore renseigné la date de naissance dans les deux cases "Age" et "categorie" j'ai un message "#erreur" qui s'enlève si je rentre une date de naissance, y aurait il un moyen de faire disparaitre ce message ?
    c'est vrai qu'en l'absence de données les expressions renvoient des erreurs, mais comme tu n'as pas précisé quelle option tu as choisis (requête ou fonction de domaine) difficile de répondre à la dernière question

  8. #8
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2022
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2022
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Désolé pour n'avoir pas précisé j'ai pris la plus facile donc la 2

  9. #9
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 840
    Points : 14 944
    Points
    14 944
    Par défaut
    bonsoir,
    il faut supprimer la valeur nulle de ID pour un nouvel enregistrement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RechDom("AgeCalc";"Rqt_CalculCat";"ID=" & Nz(ID;0))

  10. #10
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2022
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2022
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Bonjour et merci pour ton aide TeeGrandbois, çà fonctionne parfaitement.
    Access est très complexe et surtout compliqué à comprendre.
    Heureusement qu'il y a des personnes compétentes qui partagent leur savoir.
    Cordialement
    Patrick

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

Discussions similaires

  1. [XL-2007] Extraire la valeur d'une cellule
    Par jp222 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/08/2009, 08h55
  2. Extraire la valeur d'une colonne
    Par AgriPhilou dans le forum IHM
    Réponses: 2
    Dernier message: 08/03/2009, 21h57
  3. Valeur d'une expression booléenne
    Par kha_yassine dans le forum Général Java
    Réponses: 3
    Dernier message: 19/02/2009, 13h24
  4. valeur d'une expression
    Par robert_trudel dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 31/08/2008, 21h58
  5. Extraire des valeurs d'une matrice
    Par Kcyril dans le forum MATLAB
    Réponses: 4
    Dernier message: 23/04/2007, 14h59

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