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 :

Condition d'impression d'un état en fonction de la valeur d'un champ


Sujet :

IHM

  1. #1
    Membre habitué
    Inscrit en
    Juillet 2010
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 230
    Points : 129
    Points
    129
    Par défaut Condition d'impression d'un état en fonction de la valeur d'un champ
    Bonjour,

    J'ai créé (avec difficulté je précise vu mon niveau) un formulaire composé d'une recherche multicritère (tuto caféine) afin d'imprimer un état correspondant à l'enregistrement recherché. Tout fonctionne bien.

    Dans mon cas l'enregistrement recherché peut avoir été traité préalablement deux Facons : Cela amène donc 2 états differents. Un état premier controle et un état second controle. Je souhaite donc pouvoir mettre des conditions sur l'impression du dossier recherché. Pour différencier les dossiers je vais me baser sur leur date. Si le champ T_controle.date2emecontrole est null alors impression de l'état premier controle sinon impression de l'état 2eme controle.

    La ou j'ai un petit problème c'est que je ne sais pas comment aller rechercher la valeur "date2emecontrole" correspondant au dossier sélectionné dans la liste de recherche. J'arrive à poser une condition where dans ma ligne de code d'impression afin de filtrer l'ID du dossier et donc d'imprimer le bon état mais je ne sais pas comment dire en gros si date2emecontrole est null alors impression de l'état premier controle.

    Ce type de condition se font avec des IF ou je doit le mettre dans le where ?
    La recherche s'affichant dans le controle "liste" j'ai plus de mal a gérer ca..
    voici mon 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
    Private Sub printetat_Click()
     On Error GoTo Err
     
    DoCmd.OpenReport "Etat Premier controle", acViewPreview, , "T_controle.IDcontroledossier=" & Me.lstResults & "And Isnull(T_controle.DateValidation2emeCtrl)"
    DoEvents
    DoCmd.RunCommand acCmdPrint
    Err:
        If Err.Number = 2501 Then 'Evite le message d'annulation de la commande CmdPrint
        Resume Exit_Err
        End If
    Exit_Err:
    DoCmd.Close acReport, "Etat Premier controle"
     Exit Sub
    End Sub
    Merci pour votre aide

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 56
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    dans ton code vba tu peux ajouter une condition if portant sur la valeur de ton champs date2emecontrole :

    ca pourrait ressembler à ca, à voir si ca correspond à la structure de ton formulaire de recherche :

    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
    Private Sub printetat_Click()
     On Error GoTo Err
     
    If isnull(me.DateValidation2emeCtrl) then
     
    DoCmd.OpenReport "Etat Premier controle", acViewPreview, , "T_controle.IDcontroledossier=" & Me.lstResults
    DoEvents
    DoCmd.RunCommand acCmdPrint
     
    else
    DoCmd.OpenReport "Etat deuxième controle", acViewPreview, , "T_controle.IDcontroledossier=" & Me.lstResults
    DoEvents
    DoCmd.RunCommand acCmdPrint
     
    end if
     
    Err:
        If Err.Number = 2501 Then 'Evite le message d'annulation de la commande CmdPrint
        Resume Exit_Err
        End If
    Exit_Err:
    DoCmd.Close acReport, "Etat Premier controle"
     Exit Sub
    End Sub

  3. #3
    Membre habitué
    Inscrit en
    Juillet 2010
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 230
    Points : 129
    Points
    129
    Par défaut
    Bonjour et merci de ta réponse.

    J'ai pensé à cela mais je me demande si le faite de sélectionner un enregistrement dans la liste (liste de resultat de recherche) appelera la bonne date2emecontrole si ce champ (ddate2emectrl) se trouve dans la source du formulaire. En gros il faudrait réailser une relation pere fils si je ne me trompe pas mais ce n'est possible qu'entre formulaire et sous formulaire.

    Le filtre effectué par la recherche se trouve dans la liste et non dans le formulaire lui même. c'est d'ailleur pour cela que j'ai dans ma ligne de code d'impression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "T_controle.IDcontroledossier=" & Me.lstResults
    donc comment faire pour appliquer une condition if en se basant sur le contenu de la liste et non du formulaire?

    EDIT

    Est ce la propriété rowsource ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "Etat Premier controle", acViewPreview, , "T_controle.IDcontroledossier=" & Me.lstResults & " And Me.lstResults.Rowsource = IsNull(Me.DateValidation2emeCtrl)"

  4. #4
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 56
    Points : 46
    Points
    46
    Par défaut
    Pour te baser sur le contenu de la ligne de ta liste, tu pourrais mettre le bouton dans cette liste (est ce un sous formulaire ?), et dans ce cas la condition " if isnull(me.ddate2emectrl) " fonctionnera. Après ce n'est pas évident de te conseiller plus en détail sans voir de quoi il s'agit.

    En espérant que ca puisse t'aider !

  5. #5
    Membre habitué
    Inscrit en
    Juillet 2010
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 230
    Points : 129
    Points
    129
    Par défaut
    Bonjour,

    je comprend qu'il soit difficile d'imaginer la situation juste avec un post. Je post une capture de mon formulaire pour voir plus en détail.


    l'imprimante est le bouton pour imprimer. La recherche s'effectue sur le numero de dossier. Il y a une autre possibilité de filtre par date d'affectation.

    Quand je selectionne dans la liste un dossier et que j'imprime je n'ai aucun soucis, l'état qui s'imprime correspond bien au dossier sélectionné. Je voudrais juste pouvoir imprimer 2 états différents en fonction de la nature du dossier. Comme je le disais plus haut, grâce au champ date2emecontrole, je peux savoir quel état imprimer. Je voudrais donc pouvoir imprimer l'état premier ctrl si le champ date2emectrl est null sinon imprimer l'état 2eme ctrl

    Ce n'est pas un sous formulaire mais bien une liste. Je dois donc me baser sur cette liste.

    Ma question est de savoir comment appeler le champ date2emectrl (présent dans mon sql qui alimente cette liste.)

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/08/2009, 19h42
  2. Réponses: 6
    Dernier message: 05/01/2009, 16h33
  3. Réponses: 23
    Dernier message: 05/06/2008, 13h53
  4. Réponses: 4
    Dernier message: 08/05/2008, 09h46
  5. Cacher un champ dans un état en fonction de sa valeur
    Par segess dans le forum VBA Access
    Réponses: 2
    Dernier message: 25/07/2007, 11h20

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