1. #1
    Débutant
    Profil pro
    Inscrit en
    octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2004
    Messages : 482
    Points : 142
    Points
    142

    Par défaut Ne pas ouvrir formulaire si sous-formulaire vide

    Bonjour,

    Par un bouton de commande sur mon formulaire "frm_clients", j'ouvre un formulaire (sans source) "frm_locations_liste" qui contient un sous-formulaire "frm_locations_liste_sub".
    Lorsque ce sous-formulaire est vide, je souhaiterais que le formulaire "frm_locations_liste" ne s'ouvre pas.

    Voici la source de mon sous-formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT tbl_locations.Reference_location, tbl_locations.Reference_robe, tbl_locations.Reference_client, [Nom] & ' ' & [Prenom] AS [Nom+Prénom]
    FROM tbl_clients INNER JOIN (tbl_etiquettes INNER JOIN tbl_locations ON tbl_etiquettes.[Reference_robe] = tbl_locations.Reference_robe) ON tbl_clients.Reference_client = tbl_locations.Reference_client
    ORDER BY tbl_locations.Reference_location, tbl_locations.Reference_robe;

    J'ai bien essayé ce code sur ouverture de mon formulaire "frm_locations_liste" mais j'obtiens un message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Form_Open(Cancel As Integer)
        If Forms!frm_locations_liste!frm_locations_liste_sub.Form.RecordsetClone.RecordCount = 0 Then
            MsgBox "Il n'y a pas de locations pour ce client.", vbInformation
            Cancel = True
        End If
    End Sub
    Le message d'erreur est Erreur d'exécution '2455'
    La reference d'une expression à la propriété Form/Report n'est pas valide.


    Merci pour votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 167
    Points : 15 590
    Points
    15 590

    Par défaut

    Bonjour.

    Il risque de ne pas être évident de tester que le sous-formulaire est vide.

    Comme ta source ne semble pas paramétrée, je pense que la solution la plus simple est de l'enregistrer dans une requête puis lors du click qui demande l'ouverture est de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if dCount("*", "reqTaRequete")=0 then
        msgbox "Pas de données"
      else
        'Ouvrir le formulaire
    end if
    C'est moins élégant que de tester le sous-formulaire mais cela devrait marcher.

    Une autre méthode consisterai à faire une gestion d'erreur (soit dans le code soit au niveau formulaire) et si tu reçois 2455, tu sais qu'il n'y a pas de données et tu gères en conséquence.

    Là aussi moins élégant mais qui devrait fonctionner.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Débutant
    Profil pro
    Inscrit en
    octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2004
    Messages : 482
    Points : 142
    Points
    142

    Par défaut

    Citation Envoyé par marot_r Voir le message
    Bonjour.

    Il risque de ne pas être évident de tester que le sous-formulaire est vide.

    Comme ta source ne semble pas paramétrée, je pense que la solution la plus simple est de l'enregistrer dans une requête puis lors du click qui demande l'ouverture est de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if dCount("*", "reqTaRequete")=0 then
        msgbox "Pas de données"
      else
        'Ouvrir le formulaire
    end if
    C'est moins élégant que de tester le sous-formulaire mais cela devrait marcher.

    Une autre méthode consisterai à faire une gestion d'erreur (soit dans le code soit au niveau formulaire) et si tu reçois 2455, tu sais qu'il n'y a pas de données et tu gères en conséquence.

    Là aussi moins élégant mais qui devrait fonctionner.

    A+

    Merci mais j'ai oublié un détail.
    Le click qui permet d'ouvrir le formulaire le fait en fonction d'un champ lié : "Reference_client"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Location_Click()
    Dim StDocName As String
     Dim StLinkCriteriA As String
     StDocName = "frm_locations_liste"
     StLinkCriteriA = "[Reference_client]=" & Me![Reference_client]
     DoCmd.OpenForm StDocName, , , StLinkCriteriA
    End Sub
    Donc, dans le Dcount, je pense qu'il faudrait faire référence au champ "Reference_client" ...

    J'espère que tu m'as compris

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 167
    Points : 15 590
    Points
    15 590

    Par défaut

    Oui, cela devrait probablement être quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if dCount("*", "reqTaRequete", "[Reference_client]=" & Me![Reference_client])=0 then
        msgbox "Pas de données"
      else
        'Ouvrir le formulaire
    end if
    en supposant Reference_client numérique.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Débutant
    Profil pro
    Inscrit en
    octobre 2004
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2004
    Messages : 482
    Points : 142
    Points
    142

    Par défaut

    Citation Envoyé par marot_r Voir le message
    Oui, cela devrait probablement être quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if dCount("*", "reqTaRequete", "[Reference_client]=" & Me![Reference_client])=0 then
        msgbox "Pas de données"
      else
        'Ouvrir le formulaire
    end if
    en supposant Reference_client numérique.

    A+
    Génial ! Merci beaucoup marot_r !

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 167
    Points : 15 590
    Points
    15 590

    Par défaut

    Si tu considères le sujet clos, merci d'appuyer sur le bouton en bas de discussion.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/05/2015, 12h24
  2. Réponses: 2
    Dernier message: 24/06/2013, 09h31
  3. Réponses: 2
    Dernier message: 23/06/2013, 21h07
  4. Accéder à un sous-formulaire de sous-formulaire
    Par touftouf57 dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/11/2008, 19h04
  5. Lier un sous-formulaire à un sous-formulaire
    Par bobosh dans le forum IHM
    Réponses: 1
    Dernier message: 08/08/2008, 16h03

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