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

VBA Access Discussion :

[VBA] Empêcher l'affichage d'un État si la requête est vide


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 66
    Points : 59
    Points
    59
    Par défaut [VBA] Empêcher l'affichage d'un État si la requête est vide
    Bonjours,

    mon problème est bien simple, mais je n'ai pas trouvé la réponse sur le forum... alors voila!

    Dans ma requête d'ouverture d'état, il y a un paramètre demandé a l'utilisateur (noCommande). Si le numéro de commande n'existe pas, je voudrais qu'il affiche un message d'erreur et que l'État ne s'ouvre pas. J'ai donc écrit ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Report_NoData(Cancel As Integer)
    MsgBox "La commande n'existe pas"
    DoCmd.Close acReport, "Commande"
    End Sub
    Malheureusement, le DoCmd.Close ne marche pas parce-que ce code est executé AVANT l'affichage de l'État (il ne peut donc pas le fermer car il n'est pas ouvert). J'aimerais donc que l'affichage de l'État soit interrompue.

  2. #2
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    N'afficher l'etat que si la requete contient au moins 1 enregistrement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     If DCount("*","MaRequete")>0 Then Docmd.OpenReport "MonEtat"

  3. #3
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 66
    Points : 59
    Points
    59
    Par défaut
    merci!
    mais ca je doit l'écrire avant d'ouvrir l'état c'est ca?
    parce-que l'entrée de l'utilisateur se fait à l'intérieur de la requête, appelée à l'ouverture de l'état
    j'imagine qu'il faudrait que la requête se fasse dans le formulaire appelant l'ouverture de l'état c'est ca?
    sinon, y'a-t-il un moyen de le faire directement dans le code de l'état?

  4. #4
    Responsable Access

    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,

    Il suffit d'utiliser le paramètre Cancel de l'événement NoData.
    Pensez à lire l'aide :
    Citation Envoyé par F1
    Cancel : La valeur de cet argument détermine s'il faut imprimer l'état. Si l'argument Cancel est vrai (True, –1), l'état n'est pas imprimé. Vous pouvez aussi utiliser la méthode CancelEvent de l'objet DoCmd pour annuler l'impression de l'état.

  5. #5
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Citation Envoyé par helas
    N'afficher l'etat que si la requete contient au moins 1 enregistrement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     If DCount("*","MaRequete")>0 Then Docmd.OpenReport "MonEtat"
    Cette solution, n'est surement pas la meilleure, ca nous oblige à exécuter la requete 2 fois, une fois avant l'ouverture de l'état et une fois pour afficher l'état.

    La solution passe par Cancel comme le signale Arkham46.

  6. #6
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 66
    Points : 59
    Points
    59
    Par défaut
    Mille fois merci!
    Je commence mon premier poste de programmeur dans 2 semaines et comme je ne suis pas extrêmement habitué à VBA j'aimerais bien ne pas arriver sans connaître ces petits détails.

    Tout fonctionne comme sur des roulettes.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Merci ca m'a bien aidé la piste du Cancel
    Je suis tombé sur un autre site où le gars a fait une fonction InformNoData()
    C'est pas mal.

  8. #8
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut
    16 ans plus tard !
    Une fonction ? Pourquoi faire ? Une sub() suffit !
    De plus dans son Post#4 Arkham46 que je salue donne la solution !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Option Explicit
    Private Sub report_NoData(Cancel As Integer)
        Cancel = True
    End Sub
    Citation Envoyé par zimirk Voir le message
    Je suis tombé sur un autre site où le gars a fait une fonction InformNoData()
    C'est pas mal.

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

Discussions similaires

  1. [AC-2003] Afficher la photo "blank.jpg" dans état lorsque le champ est vide
    Par fins51 dans le forum VBA Access
    Réponses: 8
    Dernier message: 16/05/2009, 13h37
  2. Réponses: 2
    Dernier message: 17/11/2008, 13h43
  3. Réponses: 2
    Dernier message: 13/08/2007, 15h25
  4. [VBA] Critère pour affichage d'une msgbox
    Par Virgile59 dans le forum Access
    Réponses: 4
    Dernier message: 10/10/2005, 13h05
  5. [crystal report 8.5] Pb d'affichage de sous états
    Par abdel6908 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 06/06/2005, 10h42

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