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 :

Accès à un contrôle dans un formulaire continu


Sujet :

IHM

  1. #1
    Membre à l'essai
    Profil pro
    Enseignant
    Inscrit en
    Décembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Accès à un contrôle dans un formulaire continu
    Bonjour,

    je suis novice dans l'utilisation d'accès et ma question va peut-être paraître bête ... mais je cherche depuis un moment sur ce site sans trouver.

    Je cherche à afficher une somme dans un formulaire continu.
    La version formulaire simple fonctionne parfaitement. J'effectue le calcul en VBA avec une requête SQL puis j'affecte le résultat à un contrôle indépendant.

    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
      Dim oDb As DAO.Database
        Dim oRst As DAO.Recordset
        Dim ma_var As String
        Dim mon_sql As String
     
        Set oDb = CurrentDb
        Set oRst = Nothing
     
        ' récupération de la somme des paiements
        ' construction de la requête
        mon_sql = "SELECT Sum(Paiement.Montant) FROM Paiement" & " WHERE (([Paiement]![N° abonnement]=" & Me.N°.Value & "));"
        ' excéution de la requête
        Set oRst = oDb.OpenRecordset(mon_sql, dbOpenSnapshot)
        ' affectation des résultats
        ma_var = oRst.Fields(0)
        Me.Texte30.ControlSource = "=" & ma_var
     
        'Nous fermons les connexions
        oRst.Close
        oDb.Close
        Set oDb = Nothing
        Set oRst = Nothing
    Lorsque je passe en fomulaire continu, évidemment, il me met à jour tous mes contrôles "Texte30" car ils ne sont pas liés à un enregistrement ... je ne sais pas comment accéder à l'instance x de ce contrôle; je ne sais même pas si c'est possible.

    Si c'est possible : il doit y avoir une syntaxe qui m'échappe
    Si c'est impossible : doit-on passer directement par un champ calculé dans la table source ?

    Merci de votre aide

    Eric.

  2. #2
    Expert éminent sénior
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    bjr,

    pour un formulaire continu il faut rendre la textbox dépendante en utilisant une fonction dans la source du contrôle (avec un champ en paramètre)
    c'est le retour de cette fonction qui donne la valeur du contrôle

    fonction dans le code du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public function CalculSomme(pId as long) as long
       CalculSomme = xxxxxx
    end function
    source du contrôle :
    ou alors mettre directement un calcul dans la source du contrôle avec une fonction intégrée si l'une d'entre elles convient (bouton droit dans Source contrôle=> créer => fonctions intégrées => regroupement de domaine)

    source du contrôle (à peu près, pas testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SomDom("Montant";"Paiement";"N° abonnement=" & [])

  3. #3
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 424
    Points : 20 002
    Points
    20 002
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    Je comprends mieux, quand tu parles d'instances de contrôles c'est en fait, une instance par ligne (ou par enregistrement) dans 1 formulaire continu ?

    Edit: J'ai supprimé mon ancien message qui n'avait pas trop de rapport

  4. #4
    Membre à l'essai
    Profil pro
    Enseignant
    Inscrit en
    Décembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par User Voir le message
    Bonjour,
    Je comprends mieux, quand tu parles d'instances de contrôles c'est en fait, une instance par ligne (ou par enregistrement) dans 1 formulaire continu ?
    Bonjour,

    Merci pour vos réponses.

    oui c'est bien ça, il s'agit d'afficher une instance du calcul par ligne (ou par enrgegistrement).
    Je viens de tester en mettant à jour un champ appartenant à la table source avec le résultat de mon calcul, et ça a l'air de fonctionner : chaque ligne du formulaire continu affiche bien le résultat du calcul pour l'enregistrement correspondant.

    Mais je ne trouve pas ça très pratique car ça oblige à créer un champ de plus dans la table pour chaque calcul alors que je n'ai pas besoin d'en stocker le résultat.

    Pour l'instant cette solution me convient, mais je pense qu'il doit y avoir une solution plus "propre" qui m'échappe encore.

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Bonjour,
    Mais je ne trouve pas ça très pratique car ça oblige à créer un champ de plus dans la table pour chaque calcul alors que je n'ai pas besoin d'en stocker le résultat.

    Pour l'instant cette solution me convient, mais je pense qu'il doit y avoir une solution plus "propre" qui m'échappe encore.

    Ne comprends-tu pas ce que Arkham46 t'explique ?
    C'est "la" solution bien propre.

  6. #6
    Membre à l'essai
    Profil pro
    Enseignant
    Inscrit en
    Décembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Bonjour ClaudeLELOUP,

    oui effectivement, j'avais mal interprété la réponse de "User".

    La solution de Arkham46 marche parfaitement. MERCI ! C'est exactement ce qu'il me fallait.


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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/05/2012, 16h32
  2. [AC-2003] Récupérer valeur d'un contrôle dans un formulaire continu
    Par Miss Ti dans le forum IHM
    Réponses: 0
    Dernier message: 05/05/2009, 19h35
  3. Contrôle indépendant dans un formulaire continu
    Par Bragon12 dans le forum IHM
    Réponses: 1
    Dernier message: 17/07/2008, 20h01
  4. Réponses: 3
    Dernier message: 09/06/2006, 16h41
  5. Problème pour afficher un contrôle dans un formulaire
    Par JahRastafari dans le forum IHM
    Réponses: 5
    Dernier message: 16/06/2005, 11h15

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