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 :

Comment passer le nom d'une étiquette de formulaire en paramètre d'une fonction ?


Sujet :

IHM

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 257
    Par défaut Comment passer le nom d'une étiquette de formulaire en paramètre d'une fonction ?
    Bonjour,

    je "bidouille" actuellement un agenda sous access
    j'ai mis en place des étiquettes cliquables sur un formulaire "Etudes" (exemple "day1")
    chaque étiquette correspondant aux jours du mois
    un double click sur une étiquette met à jours 2 tables en se basant sur des informations du formulaire et le Caption de l'étiquette (je reconstitue une date)

    j'aimerais faire une fonction commune à toutes mes étiquettes et pour cela je dois passer le nom de l'étiquette en paramètre de cette fonction
    et je n'y arrive pas, j'ai essayé différents types de concaténation sans succès...

    comment fait-on ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Private Sub DAY1_DblClick(Cancel As Integer)
    
    Dim dat As Date
    dat = DateSerial(anneeContrat(), moisContrat(), Forms!Etudes!day1.Caption)
    'évènement 
    
    End Sub

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

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 959
    Par défaut
    bonjour,
    j'ai mis en place des étiquettes cliquables sur un formulaire "Etudes" (exemple "day1")
    chaque étiquette correspondant aux jours du mois
    peux-tu préciser la version Access que tu utilises ? Car, à ma connaissance il n'existe pas d'évènement sur une étiquette, ou alors tu as créé des zones de texte ou des boutons ...

  3. #3
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 257
    Par défaut
    bonjour
    j'utilise Access 2016
    je viens de vérifier et ce sont bien des Etiquettes

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

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 959
    Par défaut
    c'est donc une nouvelle fonctionalité, je n'ai qu'Access 2013.
    Une question: est-ce que sur doubleclick sur une étiquette permet de savoir que c'est le contrôle actif ?
    un test tout simple permet de le savoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub DAY1_DblClick(Cancel As Integer)
     
    ' test sur le contrôle actif
    Msgbox Me.ActiveControl.Name
     
    Dim dat As Date
    dat = DateSerial(anneeContrat(), moisContrat(), Forms!Etudes!day1.Caption)
    'évènement 
     
    End Sub
    si la boite message te renvoie Day1 c'est tout bon, il sera possible de créer une fonction commune

  5. #5
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 257
    Par défaut
    je viens de tester et çà me renvoie le nom du contrôle sur lequel est placé le focus... et non pas le nom de l'étiquette : (

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

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 959
    Par défaut
    dommage, mais cela ne rend pas la solution de mutualisation du code plus difficile, mais plus longue à mettre en place.
    Je vais donc essayer sans filet car je n'ai pas Access 2016:
    crée ta fonction dans ton formulaire on la nommera RetourDate
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function RetourDate(pEtiq as String) as Date
    pEtiq est le paramètre passé à la fonction et contient le nom du contrôle étiquette sur lequel le double-clic est effectué et RetourDate est de type Date (car elle va renvoyer la date fabriquée).
    cette fonction contiendra ce code (j'ai fait au plus simple à toi d'implémenter ce qui manque):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim dat As Variant
    dat = DateSerial(anneeContrat(), moisContrat(), Me(pEtiq).Caption)
    If isdate(date) then
       RetourDate = dat
    Else
       ' afficher un message d'erreur si date invalide
        RetourDate = 0   ' 00:00:00 
    End if
    Et l'appel se fera comme cela dans chaque évènement Double_Click:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim madate as date 
    madate = RetourDate(Me.Day1.name)
    il faut évidemment changer le nom de l'étiquette à chaque évènement

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/11/2018, 17h04
  2. passer le nom d'une fonction comme paramètre d'une autre fonction?
    Par med_alpa dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/03/2010, 12h57
  3. Comment passer un argument dans une fonction
    Par DeezerD dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 22/01/2008, 18h13
  4. Réponses: 4
    Dernier message: 09/11/2005, 17h11

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