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

Access Discussion :

Ne pas ouvrir un formulaire + sousformulaire vide


Sujet :

Access

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2012
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 243
    Points : 58
    Points
    58
    Par défaut Ne pas ouvrir un formulaire + sousformulaire vide
    Bonjour à tous

    j'ai un formulaire A avec un sous formulaire B
    Le formulaire A contient une variable (verif) qui me compte le nombre de lignes de mon SFB
    fonctionne parfaitement

    Le problème, comme je gère des stocks et que je fais passer une variable de mon formulaire initial vers mon formulaire B
    si l'article que je fais passer n'est pas présent dans le SFB, mon formulaire A + SF sont vides (blancs sans aucune donnéés)

    POur éviter ça j'ai ajouté ma variable verif qui compte les lignes de mon SF. Ce que je voudrais c'est soit à l'ouverture du formulaire A
    soit sur le bouton qui déclenche son ouverture, tester le contenu de ma variable

    j'ai essayé avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    if isnull(me.verif) then
    msgbox("article non dispo dans la stock")
    docmd.close
    else
    exit sub
    end if
    mais ça ne fonctionne pas
    merci d'avance pour vos idées et vos conseils

    bien cordialement

    BV

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Bonjour

    Peux-tu nous faire une copie du code REEL de ta base ?
    Un problème bien posé est à moitié résolu

  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2012
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 243
    Points : 58
    Points
    58
    Par défaut Re :
    Bonjour et merci pour votre réponse

    voici le code au chargement du formulaire
    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
     
     
    Private Sub Form_Load()
    Dim verif As Integer
    verif = Me.verifstock.Value
     
    If IsNull(verif) Then
     
        DoCmd.Close
     
    Else
     
        Exit Sub
     
    End If
    End Sub
    VERIFSTOCK = le contrôle qui compte le nombre de ligne du sous-formulaire
    VERIFSTOCK =SF_Affecter.Formulaire!cpte

    Dans mon sous-formulaire j'ai un champ dans le pied de formulaire
    CPTE = =Compte([ID_stock])

    quand le SF comporte au moins une ligne pas de pb
    quand il est vide : erreur d'éxécution 2455 la référence d'une expression à la propriété form/report n'est pas valide
    bloque sur la troisième ligne du code

    Merci d'avance

  4. #4
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Bonjour

    Essaie en testant directement sur la source du formulaire et en simplifiant comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Form_Load()
        If IsNull(DCount("ID_stock","NomTableOuRequête","EventuelsCritères")) Then
            MsgBox "Aucun enregistrement"
            DoCmd.Close acForm, "NomFormulaire"
            Exit Sub
        End If
        '...
    End Sub
    Un problème bien posé est à moitié résolu

  5. #5
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2012
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 243
    Points : 58
    Points
    58
    Par défaut re
    merci pour ta réponse mais ça ne fonctionne toujours pas

    voici ce que j'ai fait. Je précise que le nom de la requête est la donnée source de mon SF

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Form_Load()
     
        If IsNull(DCount("ID_stock", "R_affect")) Then
            MsgBox "Aucun enregistrement"
            DoCmd.Close acForm, "F_AffecterEquipement"
            Exit Sub
        End If
        '...
    End Sub

  6. #6
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    ça ne fonctionne toujours pas
    Merci d'être précise :
    - rien ne se passe ?
    - un message ? lequel ?
    - sur quelle ligne de code ça bloque ?
    - ...

    Essaie de faire du pas à pas à partir du code (touche F8) après avoir mis un stop en 1ère ligne de la procédure
    et une MsgBox en 2ème pour vérifier le DCount
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox DCount("ID_stock", "R_affect")
    Un problème bien posé est à moitié résolu

  7. #7
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2012
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 243
    Points : 58
    Points
    58
    Par défaut re
    je n'ai aucun blocage au niveau du code
    fenêtre blanche

  8. #8
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    fenêtre blanche
    Quelle fenêtre ?
    Un problème bien posé est à moitié résolu

  9. #9
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2012
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 243
    Points : 58
    Points
    58
    Par défaut
    celle du formulaire principal
    Quand je teste le formulaire, avec le code que tu m'as donné, si le SF comporte des enregistrements il s'affiche normalement
    si le SF n'en comporte pas la fenêtre modale est toute blanche comme si le formulaire était vide

  10. #10
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Donc la MsgBox sur le DCount n'a rien renvoyé dans les 2 cas ???
    Un problème bien posé est à moitié résolu

  11. #11
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2012
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 243
    Points : 58
    Points
    58
    Par défaut re
    m'affiche "ok" dans tous les cas
    je pense qu'il ne détecte pas la requête du SF

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Private Sub Form_Load()
     
        If IsNull(DCount("ID_stock", "R_affect")) Then
            MsgBox "Aucun enregistrement"
            DoCmd.Close acForm, "F_AffecterEquipement"
            Exit Sub
        Else
            MsgBox "ok"
        End If
        '...
    End Sub

  12. #12
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Essaie comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Form_Load()
     
        If DCount("ID_stock", "R_affect")=0 Then
            MsgBox "Aucun enregistrement"
            DoCmd.Close acForm, "F_AffecterEquipement"
            Exit Sub
        End If
        '...
    End Sub
    Un problème bien posé est à moitié résolu

  13. #13
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    J'avais oublié la MsgBox de contrôle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Form_Load()
    MsgBox DCount("ID_stock", "R_affect")
        If DCount("ID_stock", "R_affect")=0 Then
            MsgBox "Aucun enregistrement"
            DoCmd.Close acForm, "F_AffecterEquipement"
            Exit Sub
        End If
        '...
    End Sub
    Un problème bien posé est à moitié résolu

  14. #14
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2012
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 243
    Points : 58
    Points
    58
    Par défaut
    alors ça marche impec j'ai le msg qui m'affiche 2 quand SF comporte 2 lignes et 0 quand SF vide

    le problème c'est qu'il bloque sur la fermeture du formulaire car je lance le formulaire depuis un autre formulaire en faisant passer une variable
    du coup quand le SF est vide il me renvoie un erreur sur la procédure précédente (qui me lance le formulaire) = erreur sur récupération de la variable

    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
     
    Private Sub PB_AFFECTER_Click()
    Dim rt As String
    rt = Me.QUANTITE_TYPE
     
     
            'ouverture conditionnelle du formulaire
            DoCmd.OpenForm ("F_affecterEquipement"), acNormal, , "[ID_ARTICLE]=" & [REF_ARTICLE]
     
            'récupération de la variable nombre d'équipements
            Forms!F_AffecterEquipement.Form!nbart = rt
     
     
     
     
    End Sub

  15. #15
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Alors, au lieu d'ouvrir le formulaire et tester à son ouverture, il faut tester AVANT de l'ouvrir.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub PB_AFFECTER_Click()
    Dim rt As String
    rt = Me.QUANTITE_TYPE 
     
            'ouverture conditionnelle du formulaire
        If DCount("ID_stock", "R_affect") = 0 Then
            MsgBox "Aucun enregistrement"
            Exit Sub
        End If
        DoCmd.OpenForm ("F_affecterEquipement"), acNormal, , "[ID_ARTICLE]=" & [REF_ARTICLE]
    '...
    Un problème bien posé est à moitié résolu

  16. #16
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2012
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 243
    Points : 58
    Points
    58
    Par défaut
    alors j'ai mis le code sur le bouton d'ouverture
    erreur 2450 microsoft ne trouve pas le formulaire F_affecterquipement auquel il fait référence

    erreur soulignée en jaune

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        If DCount("ID_stock", "R_affect") = 0 Then

  17. #17
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    ???
    Le If Dcount n'a rien n'a voir avec le formulaire... qui n'est pas encore ouvert.

    Remet moi ton code complet jusqu'au OpenForm
    Un problème bien posé est à moitié résolu

  18. #18
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2012
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 243
    Points : 58
    Points
    58
    Par défaut
    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
     
     
    Private Sub PB_AFFECTER_Click()
    Dim rt As String
    rt = Me.QUANTITE_TYPE
     
     
                    'ouverture conditionnelle du formulaire
        If DCount("ID_stock", "R_affect") = 0 Then
            MsgBox "Aucun enregistrement"
            Exit Sub
        End If
     
        DoCmd.OpenForm ("F_affecterEquipement"), acNormal, , "[ID_ARTICLE]=" & [REF_ARTICLE]
     
     
     
            'récupération de la variable nombre d'équipements
            Forms!F_AffecterEquipement.Form!nbart = rt
     
     
    End Sub

  19. #19
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Ta requête est bien complètement indépendante du formulaire F_affecterquipement, càd sans faire appel à lui dans une expression ou un critère ?
    Un problème bien posé est à moitié résolu

  20. #20
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2012
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 243
    Points : 58
    Points
    58
    Par défaut
    Non elle fait appel à lui pour un critère de taille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT T_STOCK.REF_ARTICLE, T_STOCK.TAILLE, T_STOCK.COULEUR, T_STOCK.PRIXHT, T_STOCK.ETAT, T_STOCK.QUANTITE, T_STOCK.SEUILMINI, T_STOCK.ID_STOCK
    FROM T_STOCK
    WHERE (((T_STOCK.TAILLE)=[Formulaires]![F_AffecterEquipement]![VALEUR]));

Discussions similaires

  1. Ne pas ouvrir formulaire si sous-formulaire vide
    Par lucas-18 dans le forum VBA Access
    Réponses: 5
    Dernier message: 20/03/2017, 15h48
  2. Réponses: 17
    Dernier message: 30/04/2008, 15h56
  3. Ne pas envoyer le formulaire si champs est vide.
    Par serv dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 27/12/2006, 14h39
  4. ouvrir un formulaire sur le dernier champs vide
    Par jimy dans le forum Access
    Réponses: 3
    Dernier message: 04/10/2006, 18h35
  5. Réponses: 11
    Dernier message: 09/12/2004, 15h03

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