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 :

Comment ne pas ouvrir un formulaire si la requête ne propose aucune données ?


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 31
    Points
    31
    Par défaut Comment ne pas ouvrir un formulaire si la requête ne propose aucune données ?
    Bonjour,
    Avoir sélectionné le nom d’une DDE dans mon formulaire, je clique sur un bouton qui me permet de retomber sur un autre formulaire avec les communes qui sont reliées à cette DDE.
    Seulement, il arrive qu’une DDE n’ait aucune commune reliées a elle.
    Access m’ouvre quand même le formulaire mais bien entendu avec des champs vide !
    Donc j’aimerai que lorsque aucune donnée ne correspond à ma sélection, access n’ouvre pas le formulaire.
    J’ai trouvé ce code mais il y a des erreurs :
    Dans l’événement ouverture du formulaire :

    Private Sub Form_Open(Cancel As Integer)
    If Me.RecordsetClone.RecordCount=0 Then Cancel= True
    MsgBox “Il n’y a pas d’enregistrement”
    End Sub

    Le problème c’est que le msg (« Il n’y a pas d’enregistrement ») apparaît toujours même quand il y a des enregistrements (mais access m’ouvre quand même le formulaire dans les cas la)
    Et quand il n’y a réellement pas d’enregistrement, access ne m’ouvre pas le formulaire (jusque là ok !) mais il me met toujours le msg « l’action OpenForm a été annulé »

    Comment faire ?
    Merci

  2. #2
    Membre régulier Avatar de SnakeCharmer
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 117
    Points : 112
    Points
    112
    Par défaut
    Tu peux tester la requête sur le click du bouton, avant l'ouverture du formulaire.

    dim db as database
    dim rs1 as recordset
    set db = currentdb
    db.querydefs("tarequete").Parameters("tonParamétreDeRequete") = blabla (ce que tu veux mettre)
    set rs1 = db.querydefs("tarequete").openrecordset
    if rs1.recordcount <> 0 then
    '....traitement ouverture de ton formulaire...
    else
    Msgbox("aucune commune trouvée")

    N'hésite pas a demander si besoin
    Faut-il partir ? Rester ? Si tu peux rester, reste ; Pars, s'il le faut.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 31
    Points
    31
    Par défaut
    Merci,
    Le problème c’est que je ne comprend rien au code ! je n’ai jamais fais de vba !
    Donc je n’arrive pas à l’appliquer.
    Exemple : « db.querydefs("tarequete").Parameters("tonParamétreDeRequete") = blabla (ce que tu veux mettre) » Je vois pas ce qu’il faut mettre !
    Dsl d’avance !

  4. #4
    Membre régulier Avatar de SnakeCharmer
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 117
    Points : 112
    Points
    112
    Par défaut
    On va y aller doucement alors ^^

    Tu as bien créé une requête avec au moins un paramétre pour ton tri non ?
    Sinon, explique ta méthode.

    Pour le code, tu remplaces "ta requête" par le nom de la requete sui fait le tri et "paramdetarequete" par le paramètre de tri.
    et si c'est une valeur d'un champ que tu veux mettre comme paramètre, tu place a la suite du "=" [NomDuChamp].Value
    Faut-il partir ? Rester ? Si tu peux rester, reste ; Pars, s'il le faut.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 31
    Points
    31
    Par défaut
    Ok, je t'explique:
    J'ai un premier formulaire "DDE" qui a pour source une requete composé de la table DDE.
    Sur ce formulaire j'ai un bouton qui me permet d'ouvrir un autre formulaire "commune" qui a pour source une requête composé de plusieurs tables. (communes, mairie, maires...)
    Une commune peut être reliée à une DDE ou a aucune. Donc une DDE "peut avoir" 0 ou plusieurs communes.
    Donc quand je séléctionne une DDE dans ma liste déroulante puis que j'appuie sur le bouton, je peut voir les communes rattachées à cette DDE.
    Pour faire ce filtre, j'ai utilisé la boite à outil> mis un bouton> ouvrir un formulaire> ouvrir le formulaire et trouver des informations spécifiques a afficher> puis access me demander de sélectionner un champs du formulaire DDE (j'ai pris numDDE) et un champs du formulaire commune (j'ai aussi choisi numDDE). Et voila! le filtre se fai correctement!

  6. #6
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Bonjour,

    Si tu as utilisé l'assistant pour ouvrir ton formulaire, tu devrais avoir un code de ce genre dans l'événement sur clic du bouton :

    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
    Private Sub CommandeOuvrir_Click()
        On Error GoTo Err_CommandeOuvrir_Click
     
        Dim stDocName As String
        Dim stLinkCriteria As String
     
        stDocName = "NomDeTonFormulaire"
        DoCmd.OpenForm stDocName, , , stLinkCriteria
     
    Exit_CommandeOuvrir_Click:
        Exit Sub
     
    Err_CommandeOuvrir_Click:
        MsgBox Err.Description
        Resume Exit_CommandeOuvrir_Click
     
    End Sub
    Tu rajoutes les lignes de codes que je mets en rouge

    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
    23
    24
    25
    26
    27
    Private Sub CommandeOuvrir_Click()
        On Error GoTo Err_CommandeOuvrir_Click
    
        Dim stDocName As String
        Dim stLinkCriteria As String
    
        'Ici, remplacer NomDeTonformulaire" par le nom réél
        stDocName = "NomDeTonFormulaire"
            
        If Forms!stDocName.Recordset.RecordCount <> 0 Then
    
            DoCmd.OpenForm stDocName, , , stLinkCriteria
    
        Else
    
            MsgBox "Pas d'enregistrements"
    
        End If
    
    Exit_CommandeOuvrir_Click:
        Exit Sub
    
    Err_CommandeOuvrir_Click:
        MsgBox Err.Description
        Resume Exit_CommandeOuvrir_Click
        
    End Sub
    Ca devrait le faire !

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  7. #7
    Membre régulier Avatar de SnakeCharmer
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 117
    Points : 112
    Points
    112
    Par défaut
    Pour ma part, je suis sur Access2002 et je n'ai pas la possibilité de faire ça sur un bouton : "ouvrir avec des infos spécifiques"...

    Ma proposition fonctionne si tu créé une requête à partir de la (ou des) table(s). A partir de VB tu peut tester la requête et agir en fonction qu'elle ou non un résultat (RecordCount).
    Peut-être quelqu'un d'autre pourra t'aider. Sinon, il va falloir revoir ta conception.
    Faut-il partir ? Rester ? Si tu peux rester, reste ; Pars, s'il le faut.

  8. #8
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Bonjour,

    @SnakeCharmer

    Pour ma part, je suis sur Access2003 et je n'ai pas la possibilité de faire ça sur un bouton : "ouvrir avec des infos spécifiques"...
    Cela m'étonnerait un peu, existe en version 2002. Tu as bien regarder toutes les options offertes par l'assistant de création ?

    @samia21

    Ma propostion précédente tient toujours...

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 31
    Points
    31
    Par défaut
    Sa me met une erreur: "impossible de trouver le formulaire stDocName auquel il est fait référence dans une expression de macro ou un code visual basic"

    Voila le code que j'ai mis dans l'évènement sur click du bouton:

    Private Sub Commande14_Click()
    On Error GoTo Err_Commande14_Click

    Dim stDocName As String
    Dim stLinkCriteria As String

    stDocName = "Fml Communes hors ERDF GrDF Admi"
    stLinkCriteria = "[IdDDE]=" & Me![IdDDE]

    If Forms!stDocName.Recordset.RecordCount <> 0 Then

    DoCmd.OpenForm stDocName, , , stLinkCriteria

    Else

    MsgBox "Pas d'enregistrements"

    End If


    Exit_Commande14_Click:
    Exit Sub

    Err_Commande14_Click:
    MsgBox Err.Description
    Resume Exit_Commande14_Click

    End Sub

  10. #10
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Re,

    Non, alors cela ne va pas aller, à cause du critère...

    En reprenant l'autre solution (pas testé), cela donne quoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Form_Open(Cancel As Integer)
     
        If Me.RecordsetClone.RecordCount = 0 Then
     
            MsgBox “Il n’y a pas d’enregistrement”
            Cancel= True
     
        End If
     
    End Sub
    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 31
    Points
    31
    Par défaut
    J'ai rajouter ce code dans l'evenement ouverture du formulaire "commune"
    et sa ma mis comme erreur: "erreur de compilation: erreur de syntaxe" et sa ma surligné "MsgBox "Il n'y a pas d'enregistrement""

  12. #12
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Re,

    Si tu as

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "MsgBox "Il n'y a pas d'enregistrement""
    Ce doit-être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "Il n'y a pas d'enregistrement"
    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  13. #13
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 31
    Points
    31
    Par défaut
    Non pardon, j'ai pas mis la phrase entre ""
    J'ai bien mis comme tu me la écrit et sa me met le message d'erreur

  14. #14
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 040
    Points
    16 040
    Par défaut
    Re,

    Attention : je ne sais pas d'où viennent ces caractères : “

    Remplace les par des " autour du texte du message.

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  15. #15
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 31
    Points
    31
    Par défaut

    sa marche! cété bien les "" qui posée probleme.
    Par contre, lorsqu'il n'y a pas d'enregistrement, Access me met bien le msg "Il n'y a pas d'enregistrement" mais après il me met aussi "L'action OpenForm a été annulée"
    Peut on enlever ce dernier msg?
    car c'est pas très compréhensible pour les personnes qui vont utiliser la base

  16. #16
    Membre régulier Avatar de SnakeCharmer
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 117
    Points : 112
    Points
    112
    Par défaut
    XD wi je rectifie : Access 2002. Par contre, j'ai beau cherché dans l'assistant, je ne trouve pas.
    Sur l'assistant bouton, je fais opération sur form, ouverture de form, et ensuite il me demande quel form je veux ouvrir, rien de +...

    samia, dans ton code

    Err_CommandeOuvrir_Click:
    MsgBox Err.Description
    Resume Exit_CommandeOuvrir_Click

    Si tu effaces la ligne "msgbox err.description", tu n'auras plus le message (cependant, si une autre erreur se produit, tu ne pourras pas le savoir)
    Faut-il partir ? Rester ? Si tu peux rester, reste ; Pars, s'il le faut.

  17. #17
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 31
    Points
    31
    Par défaut
    Moi j'utilise access 2000.
    J'ai fais un petit test et je crois qu'access propose cette solution uniquement si tu as un lien entre tes formulaires.
    Comme moi entre le formulaire "commune" et le formulaire "DDE".
    DDE est reliée a commune.
    Par contre si il n'ya pas de lien il ne te le proposera pas.

    Désolé je suis que débutante!!
    j'espere que sa t'aidera quand meme!

  18. #18
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 31
    Points
    31
    Par défaut
    euuuhhh....en faite jsui pas trop sur de ce que je vien de dire!!!

    Désolé et merci SnakeCharmer

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

Discussions similaires

  1. [AC-2003] ouvrir un formulaire à partir d'une autre base de donnée Access
    Par facteur dans le forum VBA Access
    Réponses: 4
    Dernier message: 21/11/2019, 16h37
  2. [AC-2003] ouvrir un formulaire à partir d'un bouton à un enregistrement donné
    Par rafalemirage dans le forum IHM
    Réponses: 1
    Dernier message: 20/12/2010, 17h14
  3. Réponses: 3
    Dernier message: 19/12/2006, 01h16
  4. Comment ouvrir un formulaire à onglet ?
    Par titecaro dans le forum Access
    Réponses: 2
    Dernier message: 07/08/2006, 10h44
  5. Réponses: 2
    Dernier message: 18/10/2005, 10h54

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