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 :

Malgré SetWarning False Msg apparait quand même


Sujet :

Access

  1. #1
    Membre actif Avatar de samlepiratepaddy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 320
    Points : 217
    Points
    217
    Par défaut Malgré SetWarning False Msg apparait quand même
    Slt,
    Je détaille :
    Sur minuterie du F_Acceuil, je teste si il y a un enregistrement dans ma requete, et si oui je souhaite ouvrir mon formulaire F_RappelPerso!
    Sur Open du formulaire F_RappelPerso j'ai mis ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Me.RecordsetClone.RecordCount = 0 Then
        DoCmd.SetWarnings False
        Cancel = True
        DoCmd.SetWarnings True
    End If
    Et sur minuterie F_Acceuil, je lance l'ouverture du formulaire mais je n'arrive pas a supprimer le message d'erreur
    '2501' L'action open form a été annulée
    Comment imbriquer dans mon code la suppression de ce message ?
    Pouratnt j'ai mis ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DoCmd.SetWarnings False
    DoCmd.OpenForm "F_RappelPerso"
    Cancel = True
    DoCmd.SetWarnings True
    Quelqu'un a une idée ?
    Merci d'avance

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    je connais pas bien vba sous access mais je suppose que "setWarning" ne supprime pas les messages d'erreurs...

    utilise la gestion d'erreurs en plaçant une ligne

    (avant le cancel..)

  3. #3
    Membre actif Avatar de samlepiratepaddy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 320
    Points : 217
    Points
    217
    Par défaut
    Slt,
    Ben je me suis inspiré de ça dans la FAQ
    http://access.developpez.com/faq/?page=SQL#Warning
    je vais voir ce que tu me propose...
    Mais j'connais po ?

  4. #4
    Membre actif Avatar de samlepiratepaddy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 320
    Points : 217
    Points
    217
    Par défaut
    Bon ben comme d'hab quand je commence un truc que je ne connais pas je rame
    Par exemple sur ce 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 Commande16_Click()
    On Error GoTo Err_Commande16_Click
     
        Dim stDocName As String
        Dim stLinkCriteria As String
     
        stDocName = "F_RappelPerso"
     
        stLinkCriteria = "[IdSalarié]=" & Me![IdSalarié]
        DoCmd.OpenForm stDocName, , , stLinkCriteria
     
    Exit_Commande16_Click:
        Exit Sub
     
    Err_Commande16_Click:
        MsgBox Err.Description
        Resume Exit_Commande16_Click
     
    End Sub
    Comment je supprime le message '2501' ???

  5. #5
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    Salut,
    tu peux aussi mettre le code suivant sur Open

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ' rend le formulaire invisible
    me.visible = false
    'tu fais ton test
    If Me.RecordsetClone.RecordCount = 0 Then 
       docmd.close
    else
        me.visible = true
    End If
    de cette manière tu contournes le problème et c'est très propre

    A+

  6. #6
    Membre actif Avatar de samlepiratepaddy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 320
    Points : 217
    Points
    217
    Par défaut
    Slt, Alexandre
    Donc tu me propose de laisser ce formulaire ouvert mais invible plutôt que d'empecher son ouverture???
    ça risque pas de bugger sur une appli multi post ??
    Sachant que ce formulaire doit s'ouvrir selon un IdSalarié présent dans un form, qui lui est TOUJOURS ouvert ??

  7. #7
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    si c'est çà le problème

    1° tu ouvres une requête identique au formulaire
    2° tu teste s'il y a un reccord
    3° tu ouvres le formulaire

    donc tu fais l'opération avant d'ouvrir le formulaire

    A+

  8. #8
    Membre actif Avatar de samlepiratepaddy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 320
    Points : 217
    Points
    217
    Par défaut
    J'suis C.. ou quoi !
    Ma requete (SQL)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T_RappelTéléphonique.IdRdvtéléphonique, T_RappelTéléphonique.IdSalarié, T_RappelTéléphonique.IdProspect, T_RappelTéléphonique.DateRdvtelephonique, T_RappelTéléphonique.Commentaire, T_Prospect.NomPrénom, T_Prospect.CodePostal, T_Prospect.Ville, T_Prospect.TelFixe, T_Prospect.TelPortable
    FROM T_RappelTéléphonique LEFT JOIN T_Prospect ON T_RappelTéléphonique.IdProspect = T_Prospect.N°Prospect
    WHERE (((T_RappelTéléphonique.DateRdvtelephonique)=Now()));
    Sur open du F_RappelPerso
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Form_Open(Cancel As Integer)
    If Me.RecordsetClone.RecordCount = 0 Then
        DoCmd.SetWarnings False
        Cancel = True
        DoCmd.SetWarnings True
    End If
    End Sub
    Et sur Timer du F_AcceuilTélépro je souhaite simplement ouvrir le formulaire qui théoriquement ne s'ouvre que si un enregistrement est là !!
    Mais il m'indique toujours, quand y'en a pas
    '2501' L'action open form a été annulée
    Je pensais qu'en supprimant ce message cela suffisait !?
    Je me plante??

  9. #9
    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
    salut,

    1 - Les docmd.setwarnings ne servent à rien ici à priori, c'est pour les messages de mise à jour SQL.
    2 - Quand tu mets Cancel = True ça renvoie une erreur 2501 au code appelant
    3 - Il faut donc explicitement gérer cette erreur dans le code d'ouverture du formulaire si tu veux un message specifique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Commande16_Click() 
    On Error GoTo Gestion_Erreur
     
    DoCmd.OpenForm "F_RappelPerso"
     
    Exit Sub
    Gestion_Erreur:
    Select Case Err.Number
      Case 2501
        MsgBox "Formulaire vide"
      Case Else
        MsgBox "Erreur " & Err.Number & " : " & Err.Description
    End Select
    End Sub

  10. #10
    Membre actif Avatar de samlepiratepaddy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 320
    Points : 217
    Points
    217
    Par défaut
    Slt,
    mais je ne veux pas du message d'erreur !!
    Car je sais que si le formulaire ne revoit à aucun enregistrement il ne s'ouvre pas ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Form_Open(Cancel As Integer) 
    If Me.RecordsetClone.RecordCount = 0 Then 
        DoCmd.SetWarnings False 
        Cancel = True 
        DoCmd.SetWarnings True 
    End If 
    End Sub
    Je souhaite simplement supprimer le message d'erreur qui apparait quand je tente d'ouvrir le formulaire sur Timer d'un autre formulaire!!!
    J'essai de mettre une sorte de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Err.description = False
    Mais ça marche pas !!
    Ou tout du moins comme je l'écris !
    En simple :
    1/J'ai ma requete qui me sort les Rappels a faire maintenant !
    2/Mon form F_RappelPerso basé sur cette requete ne s'ouvre que si j'ai un enregistrement
    3/Sur timer du F_Acceuil je tente l'ouverture du form F_RappelPerso à interval régulier !

    J'ai le message comme quoi l'opération open form a échoué, normal s'il y en a pas ...
    Je ne veux pas voir ce message... (Erreur N° 2501 !)
    Et je ne suis pas fichu ne construire ce code sur Timer du Formulaire F_Acceuil qui ouvre le F_RappelPerso sans ce maudit message !
    faut'y etre c.. , mais je n'y arrive pas
    Ou alors, je me plante quand à l'enchainement des opérations ?
    Mais ce que je souhaite c'est ce qu'il y a au-dessus !

  11. #11
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour,

    Et pardon d'intervenir tardivement dans un sujet avancé, mais juste une question, qui montrera peut-être que je n'ai pas compris le pb:
    Pourquoi ne pas vérifier que la requête renvoie un résultat à afficher AVANT d'ouvrir le formulaire?

    A+

    pgz

  12. #12
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    où est le problème sam le pirate!?

    comme je te l'ai déjà dit tu ouvres le record set et tu teste avant l'ouverture du formulaire, de cette façon tu n'auras jamais de message d'erreur.



    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
     
    sur timer
        Dim Rstform As Recordset
        Dim BaseDonnee As Database
        Dim RstSql as string
     
     
     RstSql = "SELECT T_RappelTéléphonique.IdRdvtéléphonique, T_RappelTéléphonique.IdSalarié, T_RappelTéléphonique.IdProspect, T_RappelTéléphonique.DateRdvtelephonique, T_RappelTéléphonique.Commentaire, T_Prospect.NomPrénom, T_Prospect.CodePostal, T_Prospect.Ville, T_Prospect.TelFixe, T_Prospect.TelPortable 
    FROM T_RappelTéléphonique LEFT JOIN T_Prospect ON T_RappelTéléphonique.IdProspect = T_Prospect.N°Prospect 
    WHERE (((T_RappelTéléphonique.DateRdvtelephonique)=Now())); 
     
            Set BaseDonnee = CurrentDb
            Set Rstform = BaseDonnee.OpenRecordset(RstSql, dbOpenDynaset)
     if not rstform.eof then
        docmd.openform ton formulaire
    endif
    rstform.close
    Ce code tu le fait depuis ton formulaire principal et le tour est joué

  13. #13
    Membre actif Avatar de samlepiratepaddy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 320
    Points : 217
    Points
    217
    Par défaut
    Slt, pgz
    En effet, cela semble logique...
    Mais comment je peux tester l'existance d'un enregistrement d'une requete sur Timer d'un formulaire avant d'ouvrir le formulaire associé??????

    Par ce que ça, pour moi c'est le flou TOTAL !

  14. #14
    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
    ben tu fais comme j'ai dis mais tu enlèves la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "Formulaire vide"
    c'était juste un message pour vérifier que ça passe bien dans le bon code, tu peux l'enlever et à ce moment tu n'as plus de message d'erreur.

    (<Cancel = True> c'est juste une affectation de valeur à une variable, les setwarnings sont vraiment inutiles...)

    Pourquoi ne pas vérifier que la requête renvoie un résultat à afficher AVANT d'ouvrir le formulaire?
    Si la requête renvoie des enregistrements je pense que tu l'exécuterais deux fois : une fois pour vérifier et une autre fois à l'ouverture du formulaire.

  15. #15
    Membre actif Avatar de samlepiratepaddy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 320
    Points : 217
    Points
    217
    Par défaut
    Les msg ce sont croisés !
    Je digère l'ensemble et je reviens !
    Parce qu'il faut souvent m'expliquer longtemps pour que je comprenne vite !

  16. #16
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    C'est quoi cette bouillabaisse, Sam?

    C'est peut-être moi qui suis bouché, mais voilà ce que j'ai compris:
    F_Accueil est ouvert. La procédure sur minuterie commande l'ouverture de F_RappelPerso, ce qui te provoque un message d'erreur si la requête de ce form ne produit pas de résultat.

    Donc, je repose ma question :
    pourquoi ne pas vérifier que la requête source de F_RappelPerso produit bien un résultat avant d'ouvrir le Form? Tu ne connais pas la requête source?

    A+

    pgz

  17. #17
    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
    Pour les messages d'erreur consulte l'aide sur On error Goto ...

    C'est trés bien expliqué

Discussions similaires

  1. formulaire onSubmit soumis quand même malgré une verif return false
    Par nclsbiz dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/08/2009, 23h25
  2. lien durs mais clik quand même comptabilisés, comment ?
    Par italiasky dans le forum Langage
    Réponses: 4
    Dernier message: 04/02/2006, 15h59
  3. boucle simple dans une dataGrid avec quand même une erreur !
    Par fkr dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/11/2005, 15h04
  4. [Servlet - MySQL] Ca marche mais message d'erreur quand même
    Par ShinJava dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/11/2004, 15h15

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