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 :

Compter les enregistrements d'un sous-formulaire sans que ça plante lorsqu'il n'y en a pas [Toutes versions]


Sujet :

IHM

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 24
    Points : 17
    Points
    17
    Par défaut Compter les enregistrements d'un sous-formulaire sans que ça plante lorsqu'il n'y en a pas
    Bonjour,

    en fouillant sur Internet j'ai trouvé ce code pour compter les enregistrements d'un sous-formulaire ("ff_recherche") et indiquer le résultat dans le champ "recherche_Nombre_constats" de mon formulaire ("f_recherche").

    1 -- Me.ff_Recherche.Form.RecordsetClone.MoveLast
    2 -- Me.recherche_Nombre_Constats =Me.ff_Recherche.Form.RecordsetClone.RecordCount

    Le problème est que lorsqu'il n'y a aucun enregistrement dans le sous-formulaire (ce qui est possible puisque le sous-formulaire dépend de nombreux paramètres), ça plante.

    Est-ce que quelqu'un aurait une piste de solution pour qu'en cas d'absence d'enregistrements dans le sous-formulaire ce soit simplement un "0" qui s'affiche au lieu d'un plantage?

    Merci d'avance,

    Adrien

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonjour,

    Du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If Me.ff_Recherche.Form.RecordsetClone.RecordCount>0 Then
         Me.ff_Recherche.Form.RecordsetClone.MoveLast
         Me.recherche_Nombre_Constats =Me.ff_Recherche.Form.RecordsetClone.RecordCount
    Else
         Me.recherche_Nombre_Constats =0
    End If
    Bonne continuation

  3. #3
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Le plus simple c'est encore une zone de texte cachée dans l'entête du sous formulaire utilisant Count() et de faire référence à cette zone de texte dans la propriété Source Contrôle du contrôle du formulaire principal.

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonjour Christophe,

    OK, impeccable !!

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 24
    Points : 17
    Points
    17
    Par défaut zone de texte cachée
    Bonjour,

    merci pour vos réponses.

    j'ai pensé à la zone de texte cachée, mais je dois dire que c'est quelque chose que je n'aime pas vraiment. Disons que je ne trouve pas "propre" de cacher quelque chose, alors qu'une autre solution doit exister.

    Si je ne trouve rien d'autre, j'y viendrais, mais j'avoue que ce n'est pas la solution que je privilégie.

    merci!

    Adrien

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 24
    Points : 17
    Points
    17
    Par défaut solution potentielle
    J'ai peut-être trouvé une solution du genre de celle de Madefemere.

    Je l'essaye ce soir, et je vous reviens avec.

    merci!

    Adrien

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 24
    Points : 17
    Points
    17
    Par défaut du progrès mais pas encore la solution miracle
    J'ai donc testé la solution que j'avais trouvée, et elle marche bien à un détail près. Mais avant d'expliquer ce détail, je vous explique mon formulaire et mon sous-formulaire :

    Mon sous-formulaire s'affiche en fonction de critères qui sont sélectionnables dans mon formulaire : il s'agit d'une vingtaine de listes déroulantes. Dès que l'utilisateur sélectionne une valeur dans une liste déroulante, mon sous-formulaire se met à jour, et un champ dans le formulaire ("recherche_Nombre_Constats") indique le nombre d'enregistrement du sous-formulaire.

    Il arrive que certaines combinaisons de critères ne renvoient aucun résultat : mon champ "recherche_Nombre_Constats" dans le formulaire indique alors "0". Lorsque j'ai ouvert ce forum ce n'était pas le cas, il plantait, mais ce problème est maintenant résolu.

    Le nouveau problème que j'ai, c'est que lorsque c'est la valeur "0" qui est retournée en fonction de mes critères, si je modifie un critère et que mon sous-formulaire m'affiche des enregistrement, mon champ "recherche_Nombre_Constats" ne se met plus à jour et reste à zéro.

    voici mon code :

    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
     
    Private Sub recherche_annee_AfterUpdate()
     
    Dim NbEnr As DAO.Recordset
    Set NbEnr = Me.ff_Recherche.Form.RecordsetClone
     
    [Forms]![f_Recherche]![ff_Recherche].Requery
     
    If Not NbEnr.BOF Then
        NbEnr.MoveLast
        Me.recherche_Nombre_Constats = NbEnr.RecordCount
    Else
        Me.recherche_Nombre_Constats = 0
    End If
     
    NbEnr.Close
    Set NbEnr = Nothing
     
    End Sub
    Pour info, "f_recherche" est mon formulaire et "ff_recherche" mon sous-formulaire.

    Merci d'avance pour votre aide...

    Adrien

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonjour,

    Peut-être parce que la ligne 7 n'est pas bonne, il faudrait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Forms]![f_Recherche]![ff_Recherche].Form.Requery
    @+

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 24
    Points : 17
    Points
    17
    Par défaut malheureusement non...
    Bonjour,

    non, ça n'a rien changé... merci pour l'essai...

    je cherche encore...

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 24
    Points : 17
    Points
    17
    Par défaut fermeture du post
    Bonjour,

    n'ayant pas trouvé d'autres solutions, j'ai utilisé ce qu'à proposer Tofalu.

    Merci encore, et bonne journée.

    Adrien

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 24
    Points : 17
    Points
    17
    Par défaut Finalement, si jamais ça intéresse quelqu'un...
    J'ai fini par écrire cette solution, qui n'utilise pas de champ caché (d'ailleurs le compte(*) donnait une erreur si je n'avais aucun enregistrement):

    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
     
    Dim rst As DAO.Recordset
     
    Set rst = Me.Controls("ff_recherche").Form.RecordsetClone
     
     
    If rst.RecordCount <> 0 Then
        rst.MoveLast
        Me.recherche_Nombre_Constats = rst.RecordCount
    Else
        Me.recherche_Nombre_Constats = 0
    End If
     
     
    rst.Close
    Set rst = Nothing
    ça ressemble beaucoup à la solution initiale proposée par Madefemere...

    Bonne journée!

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

Discussions similaires

  1. [AC-2010] Compter les enregistrements d'un sous-formulaire
    Par JOHN14 dans le forum Access
    Réponses: 7
    Dernier message: 16/06/2014, 11h42
  2. [AC-97] Compter les enregistrements d'un sous formulaire
    Par Milyshyn76 dans le forum VBA Access
    Réponses: 1
    Dernier message: 01/06/2010, 16h38
  3. Compter les enr sur un sous-formulaire
    Par popof60 dans le forum Access
    Réponses: 4
    Dernier message: 15/02/2007, 11h40
  4. Compter les enregistrements d'un sous-formulaire
    Par djamy dans le forum Access
    Réponses: 6
    Dernier message: 06/07/2006, 21h18
  5. trier les enregistrements dans un sous-formulaire
    Par moicats dans le forum Access
    Réponses: 3
    Dernier message: 30/03/2006, 11h03

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