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 :

Générateur d'expression. Afficher le nombre de record d'un Sous Form dans un autre Form [AC-2003]


Sujet :

IHM

  1. #1
    Membre habitué
    Inscrit en
    Juillet 2010
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 230
    Points : 129
    Points
    129
    Par défaut Générateur d'expression. Afficher le nombre de record d'un Sous Form dans un autre Form
    Bonjour

    J'ai un petit problème qui je suis sur est tout bête mais je n'arrive pas à le résoudre.

    J'ai un sous formulaire: SF_B dans un formulaire principal : FormB
    Dans SF_B j'ai: un champ texte: NbDossier avec comme source: =Compte([IDdossier])
    J'ai dans mon FormB un autre champ texte: Compteur avec comme source: =[SF_B].[Formulaire]![NbDossier]

    Là aucun souci je récupère le nombre d'enregistrement de mon sous formulaire.

    Ce que je souhaite faire c'est la même chose mais dans un autre formulaire : le formulaire: FormA. Ce formulaire va servir à ouvrir le FormB via un bouton commande mais je veux qu'avant de l'ouvrir on puisse voir le nombre d'enregistrement qu'il contient.
    J'ai donc créer dans FormA un champ texte: compteur avec comme source: =[Formulaires]![FormB]![SF_B].[Formulaire]![NbDossier]
    Le problème c'est que ca ne marche pas et je ne comprend pas pourquoi. J'ai #erreur qui s'affiche

    J'ai pourtant regarder l'aide F11 concernant la création d'expression...
    Si quelqu'un pouvait me dire d'ou vient l'erreur je lui en serait reconnaissant.

  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 : 281 907
    Points
    281 907
    Par défaut
    Bonjour,
    Pour que cela fonctionne, il faut que le formulaire soit ouvert.
    Ne peux-tu
    - l'ouvrir d'office
    - t'arranger pour qu'on ne le voit pas (par exemple tous ses contrôles invisibles, ou un rectangle qui masque tout le reste)
    - quand on décide d'en disposer, on le fait apparaître.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    Tu peux utiliser la requete source qui alimente le sous-formulaire SF_B pour compter directement le nombre d'enregistrement dans tes tables. Là tu seras independant du formulaire FormB.
    Par exple si la source de ton sous formulaire SF_B est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     select idDossier,LibelleDossier from Dossier where xxxx
    , alors tu feras derriere le bouton du formA qui ouvre ton formB une requete du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim Rs as DAO.recordset
    set Rs=CurrentDb.OpenRecordset("select count(idDossier) as nbDossier from Dossier where xxxx")
    tonchamp.text=Rs!nbDossier

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2010
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 230
    Points : 129
    Points
    129
    Par défaut
    Bonjour à vous deux !!

    Merci pour vos réponse !!

    Pour le moment La solution qui fonctionne est celle de Claudeleloup ( c'est la plus simple aussi on va dire, pratique pour ceux qui ont du mal avec les requetes SQL). Cependant j'ai un petit problème concernant l'affichage. J'ai l'impression qu'il ne veut pas se mettre à jour automatiquement. Je m'explique:
    J'ai un Form Menu utilisateur. Dans ce Form un bouton commande qui ouvre le FormA. Dans ce Form J'ai trois bouton commande. Un bouton qui ouvre le FormB, un autre le FormC et un dernier le FormD.Dans les Form B C D j'ai un sous formulaire (SF_B; SF_C; SF_D).
    J'ai trois zones de texte contenant l'expression, une en face de chaque bouton commande dans le formA.
    Lorsque j'ouvre pour la premiere fois le formA via le menu utilisateur, rien ne s'affiche, les 3 zones de texte sont vides et sans message d'erreur. Je ferme alors tout et refais la même manip et la sans savoir pourquoi cela s'affiche. Je pense que c'est du à un problème de mise à jour. Cela peut dépendre des ordinateurs peut être..??

    Pour répondre à Colonnel,

    J'avoue que ta technique peut être pas mal aussi et résoudrais peut être le problème d'affichage lors de la premiere ouverture. Mes trois Sous form (SF_B; SF_C; SF_D) filtre les enregistrements de la table T_dossiers en fonction de 3 valeurs contenu dans le champ TypeControle (soit null, 2 ou 3On prend SF_B qui filtre les record de T_dossiers sur Null

    cela donnerai donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim Rs as DAO.recordset
    set Rs=CurrentDb.OpenRecordset("select count(IDDossier) as nbDossier from T_Dossiers where (((T_dossiers.TypeControle) Is Null))")
    Tonchamp.text=Rs!nbDossier
    Je pense qu'il faut donc que je mette cela sur l'evenement clic du bouton présent sur le form menu utilisateur qui ouvre FormA. J'ai testé mais j'ai un message d'erreur concernant "Tonchamp.text". Je ne sur pas sur de bien comprendre. Si ma zone de texte dans le FormA se nomme Compteur je devrais mettre Compteur.text ?

    Merci de m'éclairer sur ce point

  5. #5
    jojo5650
    Invité(e)
    Par défaut
    1)
    Dans ton sous-formulaire, vas dans la section pied de formulaire, place un champs text.
    Dans la propriété ctrlSource de ce champs tu ecrit =sum([un des champs du sous formulaire]) puis donne à ce control un nom spécifique
    Pour éviter diverses erreurs sur ce control dans defaultValue place la valeur 0

    2) Dans ton formulaire principal place un champs text
    dans la propriété ControlSource place =[le nom du sous formulaire].[Form]![le control qui effectue la somme]

    Pas besoin de relancer une annalyse ou autre sur ta db

    Si cela n'est pas claire envoie moi un message et je t'enverrai une DB

    Mais d'abord cherche et tu trouvera, aide toi et le ciel t'aidera même pour un athée.

    Bien à ceux qui liront ce post.



    Citation Envoyé par Chagui Voir le message
    Bonjour à vous deux !!

    Merci pour vos réponse !!

    Pour le moment La solution qui fonctionne est celle de Claudeleloup ( c'est la plus simple aussi on va dire, pratique pour ceux qui ont du mal avec les requetes SQL). Cependant j'ai un petit problème concernant l'affichage. J'ai l'impression qu'il ne veut pas se mettre à jour automatiquement. Je m'explique:
    J'ai un Form Menu utilisateur. Dans ce Form un bouton commande qui ouvre le FormA. Dans ce Form J'ai trois bouton commande. Un bouton qui ouvre le FormB, un autre le FormC et un dernier le FormD.Dans les Form B C D j'ai un sous formulaire (SF_B; SF_C; SF_D).
    J'ai trois zones de texte contenant l'expression, une en face de chaque bouton commande dans le formA.
    Lorsque j'ouvre pour la premiere fois le formA via le menu utilisateur, rien ne s'affiche, les 3 zones de texte sont vides et sans message d'erreur. Je ferme alors tout et refais la même manip et la sans savoir pourquoi cela s'affiche. Je pense que c'est du à un problème de mise à jour. Cela peut dépendre des ordinateurs peut être..??

    Pour répondre à Colonnel,

    J'avoue que ta technique peut être pas mal aussi et résoudrais peut être le problème d'affichage lors de la premiere ouverture. Mes trois Sous form (SF_B; SF_C; SF_D) filtre les enregistrements de la table T_dossiers en fonction de 3 valeurs contenu dans le champ TypeControle (soit null, 2 ou 3On prend SF_B qui filtre les record de T_dossiers sur Null

    cela donnerai donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim Rs as DAO.recordset
    set Rs=CurrentDb.OpenRecordset("select count(IDDossier) as nbDossier from T_Dossiers where (((T_dossiers.TypeControle) Is Null))")
    Tonchamp.text=Rs!nbDossier
    Je pense qu'il faut donc que je mette cela sur l'evenement clic du bouton présent sur le form menu utilisateur qui ouvre FormA. J'ai testé mais j'ai un message d'erreur concernant "Tonchamp.text". Je ne sur pas sur de bien comprendre. Si ma zone de texte dans le FormA se nomme Compteur je devrais mettre Compteur.text ?

    Merci de m'éclairer sur ce point

  6. #6
    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 : 281 907
    Points
    281 907
    Par défaut
    Bonjour,
    Là aucun souci je récupère le nombre d'enregistrement de mon sous formulaire.
    J’ignore quelle méthode tu utilises. Colonnel et JoJo5650 te proposent des alternatives intéressantes.
    Mais là, n’est pas encore ton problème. On pourra y revenir plus tard si tu le souhaites.


    Lorsque j'ouvre pour la premiere fois le formA via le menu utilisateur, rien ne s'affiche, les 3 zones de texte sont vides
    Que voudrais-tu y voir ?
    Si les 3 autres formulaires sont fermés, il n'y a rien à afficher.
    Ou je n'ai pas compris ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  7. #7
    jojo5650
    Invité(e)
    Par défaut Les controls qui effectue le calcul
    Dans tes controls qui effectuent les sommes vérifie que defaultValue=0 car les sommes sur des NULL provoquent des erreurs.
    jojo5650
    Citation Envoyé par Chagui Voir le message
    Bonjour

    J'ai un petit problème qui je suis sur est tout bête mais je n'arrive pas à le résoudre.

    J'ai un sous formulaire: SF_B dans un formulaire principal : FormB
    Dans SF_B j'ai: un champ texte: NbDossier avec comme source: =Compte([IDdossier])
    J'ai dans mon FormB un autre champ texte: Compteur avec comme source: =[SF_B].[Formulaire]![NbDossier]

    Là aucun souci je récupère le nombre d'enregistrement de mon sous formulaire.

    Ce que je souhaite faire c'est la même chose mais dans un autre formulaire : le formulaire: FormA. Ce formulaire va servir à ouvrir le FormB via un bouton commande mais je veux qu'avant de l'ouvrir on puisse voir le nombre d'enregistrement qu'il contient.
    J'ai donc créer dans FormA un champ texte: compteur avec comme source: =[Formulaires]![FormB]![SF_B].[Formulaire]![NbDossier]
    Le problème c'est que ca ne marche pas et je ne comprend pas pourquoi. J'ai #erreur qui s'affiche

    J'ai pourtant regarder l'aide F11 concernant la création d'expression...
    Si quelqu'un pouvait me dire d'ou vient l'erreur je lui en serait reconnaissant.

  8. #8
    Membre habitué
    Inscrit en
    Juillet 2010
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 230
    Points : 129
    Points
    129
    Par défaut
    Bonjour à tous !

    Désolé si je n'ai pas répondu... J'étais finalement resté sur l'idée de claudeleloup. Rendre invisible les sous formulaires pour faire fonctionner =compte.
    J'ai finalement décidé aujourd'hui de revenir dessus... et j'ai presque réussi à faire ce que je voulais grâce à l'aide du forum biensur... (un problème reste avec la valeur Isnull dans ma requete, cela ne marche pas)...

    Voici le post ICI

    Merci à vous en tout cas d'avoir pris le temps de vous penchez sur mon problème !!

    Bonne continuation

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

Discussions similaires

  1. [AC-2010] Ajouter record d'un sous formulaire dans une autre table
    Par wisemanvsfatboy dans le forum VBA Access
    Réponses: 3
    Dernier message: 21/02/2011, 09h01
  2. Réponses: 4
    Dernier message: 19/04/2007, 17h42
  3. Réponses: 27
    Dernier message: 28/03/2006, 10h53
  4. Réponses: 2
    Dernier message: 07/02/2006, 20h42
  5. Réponses: 28
    Dernier message: 22/09/2005, 11h57

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