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

IHM Discussion :

Affichage en temps réel, paramétré par DAO , de contrôles dans le détail d'un Etat/Formulaire? [AC-2010]


Sujet :

IHM

  1. #1
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    Janvier 2013
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 372
    Points : 1 202
    Points
    1 202
    Par défaut Affichage en temps réel, paramétré par DAO , de contrôles dans le détail d'un Etat/Formulaire?
    Bonjour!

    Modèle:

    Je cherche à modéliser un service de bénévolat professoral - sur mon temps libre et hors du cadre scolaire précisons

    Deux tables de base : mentor et élève.

    Deux tables "CIM" :
    - mentorer, qui comprend les dates de début et fin du mentorat
    - matcher, qui liste les propositions de mentorat faites par les professeurs aux élèves, avec la date, et un statut de match (1 pour proposition faite, en attente avant acceptation ; 2 pour candidature de l'élève mais ceci n'est pas dans notre morceau de modèle)
    Nom : Mentorat.jpg
Affichages : 268
Taille : 28,1 Ko

    Les propositions de mentorat se font par l'état "EEleve"

    Nom : EEleve.jpg
Affichages : 200
Taille : 24,1 Ko
    La liste ("Liste") déroulante en en-tête simule une identification du professeur.

    La création de contrôles par VBA étant du haut allemand pour moi, j'ai opté pour la superposition de contrôles, affichés ou non par VBA.
    A coté de chaque élève en détail se trouve donc :
    Un bouton d'ajout/proposition ("Commande")
    Deux étiquettes : "Prop" et "Ment"

    Problème :
    Le contrôle de l'affichage se compose de deux parties :
    - Vérifier l'existence d'un mentorat existant, auquel cas le bouton Ajouter de l'état serait remplaçé par l'étiquette "Mentorat en cours"
    - Vérifier l'absence de propositions précédentes, sinon afficher " Proposition effectuée"

    Le bouton de commande ajouter fonctionne aujourd'hui, c'est sur le contrôle de l'affichage conditionnel que je bute.
    Merci de trouver ci-dessous le code existant :

    J'ai bien sûr pensé à la procédure événementielle sur formatage du détail de l'état.
    Premièrement je n'arrive pas à la faire fonctionner. Est-il possible d'obtenir une correction?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    '*****Procédure au formatage du détail de l'état - Code test******
    Private Sub Détail_format(Cancel As Integer, formatCount As Integer)
    '3 est une valeur arbitraire test!
    If Me.CodeEleve.Value = 3 Then
    Me.Commande.Visible = False
    End If
    End Sub
    Ci-dessous le code comprenant les deux contrôles d'affichage.

    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
    35
    36
    37
    38
    39
    40
    '****************Code orphelin à insérer, pour le contrôle de l'affichage des boutons _
    ' "Ajouter"(Commande5), et des étiquettes "Mentorat en cours"(Ment) et _
    ' "Proposition effectuée"(Prop)
    ' Paramétrage de l'affichage par DAO d'après les tables 1/"Mentorer" et 2/"Matcher"******************
     
    'Déclarations
    Dim a As Database
    Dim b As Object
    Dim strCritere As String
    Dim msg, mentor, eleve
     
    Set a = CurrentDb
    mentor = Me.CodeMentor.Value
     
    eleve = Me.CodeEleve.Value
     
    '**** 1/ Vérification qu'un mentorat n'est pas déjà en cours****
    Set b = a.OpenRecordset("mentorer", dbOpenDynaset)
    strCritere = "Codeeleve LIKE " & Chr(34) & eleve & "*" & Chr(34) _
                & " and codementor LIKE " & Chr(34) & mentor & "*" & Chr(34) & " and datefment null"
                b.FindFirst strCritere
    If b.NoMatch Then
        Me.Ment = False
    Else
        Me.Commande.Visible = False
    End If
    b.Close
     
    ' 2/ Vérification que la proposition n'est pas déjà postée
    Set b = a.OpenRecordset("Matcher", dbOpenDynaset)
    strCritere = "Codeeleve LIKE " & Chr(34) & eleve & "*" & Chr(34) _
                & " and codementor LIKE " & Chr(34) & mentor & "*" & Chr(34) & " and codematch like " & Chr(34) & "1*" & Chr(34)
                b.FindFirst strCritere
    If b.NoMatch Then
        Me.Prop.Visible = False
    Else
        Me.Commande.Visible = False
    End If
    b.Close: Set b = Nothing
    '************Fin de code orphelin***************
    Je réalise que lors du formatage de l'état la liste d'en tête n'est pas renseignée, d'où ma deuxième question :
    Peut-on relancer le formatage de l'état par VBA?

    Je ne suis pas sûr d'être sur la bonne piste avec le formatage de l'état et recevrai vos remarques avec plaisir!

    Cordialement.


    Connaissances :

    J'ai une connaissance vulgaire du language VBA, surtout une très grande NON-maîtrise des méthodes, propriétés et collections

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour et bienvenue,

    Je ne comprends pas ton approche quand tu parles d’état : je m’attendrais à ce que tu nous parles de formulaires :
    - l’un pour encoder les propositions des mentors ;
    - un autre pour encoder les demandes des élèves ;
    - un troisième pour enregistrer les « contrats » mentor/élève
    et seulement alors d’états pour rendre compte d’une situation ponctuelle.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    Janvier 2013
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 372
    Points : 1 202
    Points
    1 202
    Par défaut
    J'avais renoncé au formulaire, ayant oublié la disposition tabulaire proposée par l'assistant de création.
    Ne parlons donc plus d'état mais de formulaire... (bien sûr!)

    Le formulaire a sensiblement la même disposition que l'état précédent.

    Comment gérer en temps réel l'affichage des 3 options décrites (commande "ajouter", étiquettes "mentorat en cours" et "proposition effectuée") dans le détail de chaque ligne?
    Pour expliciter je cherche à ce qu'une seule des trois soit visible en même temps.

    J'ai pensé à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_AfterUpdate()
         For Each CodeEleve In Détail
              INSERER CODE ORPHELIN
         Next CodeEleve
    End sub
    ?

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Si tu le désires, je peux te donner un coup de main, pour autant que tu expliques en détail ce que doit faire ton application.

    Explique avec des mots (et pas avec des boutons, des étiquettes...) comment tu vois les choses.

    Par exemple

    - ce qu'il faut mémoriser comme info pour connaître l'offre d'un mentor ;
    - comment se concrétise le "contrat" mentor/élève ;
    - les étapes de ce processus...

    Cela permettra de déterminer le contenu des tables, leurs relations et les formulaires qui serviront à les remplir.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    Janvier 2013
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 372
    Points : 1 202
    Points
    1 202
    Par défaut
    Volontiers et merci d'avance!

    Modélisation du mentorat

    Appairage mentor/élève

    Le mentor peut faire le premier pas vers l'élève, ou inversement.

    L'offre du mentor est modélisée par un champ numérique.
    Ce même champ (que j'ai nommé codematch dans la table matcher) permet aussi de décrire dans l'autre sens, la candidature de l'élève, avec une valeur numérique différente.
    Les offres/candidatures se font par deux formulaires ( ) distincts:
    - proposition du mentor
    - candidature de l'élève
    A chaque formulaire, une liste détaillée, et, à chaque enregistrement du détail, un bouton de commande (cf. 2ème image).


    Début du mentorat

    Comme vous l'avez effectivement évoqué, l'acceptation du mentorat se ferait par le biais de pages de profil, mentor et élève, personnelles, soit d'autres formulaires.
    Le fonctionnement du système est symétrique, c'est pourquoi je ne m'intéresse pour l'instant qu'au formulaire permettant à un mentor de proposer à un élève un mentorat.

    Formulaire EEleve (Liste des élèves et proposition de mentorat) - Code

    La procédure associée au bouton de commande met à jour le "statut d'appairage" codematch, en écrivant dans la table matcher le statut "1", pour une clé primaire donnée.
    Jusque-là tout fonctionne.


    D'autre part je voudrais :
    - que le bouton soit remplacé, au chargement du formulaire, par un message au cas où le mentor et l'élève aient déjà conclu un contrat de mentorat.
    - qu'un mentor ne puisse proposer ses services qu'une fois par élève, avant que l'élève accepte ou refuse. Je voudrais donc remplacer le bouton de commande immédiatement après le clic, par un message indiquant qu'une proposition a déjà été "envoyée".
    C'est ce qu'est censé faire le "code orphelin" ci-dessus, et pourquoi je viens vers vous.

    Je viens plus demander de l'aide pour ce "contrôle dynamique d'affichage de contrôles" , dans le détail du formulaire ; plutôt que pour la modélisation. Vous pouvez d'ailleurs trouver le mini-MCD dans la première image.

    J'espère avoir été plus explicite, merci de vos réponses!

  6. #6
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    Janvier 2013
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 372
    Points : 1 202
    Points
    1 202
    Par défaut Formulaire ou état?
    Le type de formulaire qui nous intérèsse est continu, et il n'est pas possible sur cet objet de paramétrer des contrôles par ligne.
    Ce sujet traite de la question, je rencontre en fait exactement le même problème que l'auteur.
    http://www.developpez.net/forums/d12...-mode-continu/
    La seule solution proposée est la triste mise en forme conditionnelle, qui autorise au maximum les expressions, et n'accepte donc pas le DAO.

    Une autre solution proposée dans la FAQ par Maxence Hubiche en 2005 (http://access.developpez.com/faq/?pa...nviFormContinu) est de faire requêter le paramétrage à la création du formulaire et de créer dans des champs du détail des contrôles sous forme d'objets OLE. Puis de rafraîchir le formulaire pour arriver au temps réel.

    Je pense pouvoir utiliser un mélange de ces deux solutions.

    Cependant, je garde toujours ouverte la piste première de l'état. On y trouve en effet le contrôle par ligne qui manque au formulaire continu, sous la forme de la procédure événementielle détail_format.
    Pour cela j'aurais svp besoin de votre aide, pour répondre à la toute première question de ce topic et corriger le premier morceau de code?

  7. #7
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,


    Cependant, je garde toujours ouverte la piste première de l'état. On y trouve en effet le contrôle par ligne qui manque au formulaire continu, sous la forme de la procédure événementielle détail_format.
    Pour cela j'aurais svp besoin de votre aide, pour répondre à la toute première question de ce topic et corriger le premier morceau de code?

    Désolé de ne pouvoir t'aider : je passe la main.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour

    J'ai un peu de mal à comprendre, mais pourquoi un bouton dans un état ?

    Un état n'a pas vocation à être interactif, ce n'est fait que pour l'édition.

    Philippe

  9. #9
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    Janvier 2013
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 372
    Points : 1 202
    Points
    1 202
    Par défaut
    Merci Claude Leloup pour avoir penché votre œil sur ce topic!

    Bonjour,

    Pour faire très court, très clair, en simplifiant un tout petit peu:
    Je cherche à enregistrer des données, depuis une liste, par un bouton de commande accolé à chaque ligne.
    Je voudrais, une fois le bouton activé, le faire disparaître, et afficher l'information que l'enregistrement a été fait.


    Court historique du topic :
    Je me suis d'abord tourné vers les états, par mémoire visuelle des listes d'enregistrements.
    Claude Leloup m'a heureusement rappelé la procédure access : enregistrer les données avec des formulaires, les restituer avec des états.
    Je me suis donc intéressé au seul type de formulaire satisfaisant ma condition d'affichage par liste, le formulaire continu.

    Seulement, après de succinctes recherches, j'ai compris que le paramétrage des contrôles par ligne de détail est plus que limité.
    J'ai par ailleurs trouvé des méthodes type "bricolage", pour résoudre mon problème en restant sur formulaire.
    D'autre part, je souhaiterais écarter définitivement la piste de l'état, qui propose une gestion des lignes de détail plus poussée qu'un formulaire continu, avec notamment la procédure détail_format.

    J'espère quelques avis, avant de me résigner à l'utilisation exclusive du formulaire continu pour ce problème

  10. #10
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    Janvier 2013
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 372
    Points : 1 202
    Points
    1 202
    Par défaut
    Un dernier post pour clôturer ce topic :

    Le bricolage fut fastidieux mais il est enfin fini!

    Voici, en PJ, le rendu du paramétrage par requête, associé à des contrôles OLE.

    Database1 - Devnet.zip

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

Discussions similaires

  1. Affichage en temps réel
    Par Luciefer dans le forum Interfaces Graphiques
    Réponses: 20
    Dernier message: 17/08/2007, 15h29
  2. Affichage en temps réel ??
    Par haffouff dans le forum Langage
    Réponses: 2
    Dernier message: 11/05/2006, 22h57
  3. Affichage en temps réel du résultat d'un thread
    Par bradley vier dans le forum MFC
    Réponses: 14
    Dernier message: 28/03/2006, 16h56
  4. Affichage en temps réel...
    Par beral dans le forum C++Builder
    Réponses: 6
    Dernier message: 09/02/2006, 13h05
  5. [WD9] Affichage en temps réel
    Par oz80 dans le forum WinDev
    Réponses: 4
    Dernier message: 11/01/2006, 15h06

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