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 :

Afficher les données de mon formulaire dans un état [AC-2003]


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Profil pro
    L3 MIAGE
    Inscrit en
    Octobre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : L3 MIAGE

    Informations forums :
    Inscription : Octobre 2009
    Messages : 64
    Points : 28
    Points
    28
    Par défaut Afficher les données de mon formulaire dans un état
    J'ai construit un formulaire qui permet de faire des statistiques sur mes enregistrements en fonction de critères que l'utilisateur choisi.
    Il y a par exemple la commune, un objet et une période.
    On peut combiner les différents critères ou n'en choisir aucun.

    Grâce au code VBA je "construis" ma requête et l'exécute.

    J'ai placé des zones de textes dans mon formulaire auxquelles j'affecte les statistiques que j'ai calculé.

    Je voudrais maintenant pouvoir offrir la possibilité d'imprimer tout ça dans un état mais je ne vois pas du tout comment faire et passer les informations de mon formulaire vers mon état alors si quelqu'un sait éclairer ma lanterne je veux bien.

    Bien à vous

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Les résultats ont-ils toujours les mêmes champs ?

    Actuellement qu'utilises-tu pour afficher tes résultats ? Un formulaire lié ?

    A+

  3. #3
    Nouveau membre du Club
    Profil pro
    L3 MIAGE
    Inscrit en
    Octobre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : L3 MIAGE

    Informations forums :
    Inscription : Octobre 2009
    Messages : 64
    Points : 28
    Points
    28
    Par défaut
    Voici une capture d'écran de mon formulaire

    Je peux sélectionner dans le haut les différents critères.
    Si rien n'est sélectionné, la requête s'exécute sur l'ensemble de la table.

    Au clic sur le bouton j'ai un code VBA qui exécute la requête

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     'Déclaration des variables
        Dim rst As Recordset
     
        Dim SQL As String
        Dim SQLWhere As String
     
        'Construction de la requete
        SQL = "SELECT Count(itv.id_itv) AS Total, Sum(lin_commande) AS Lin_cmd, Sum(lin_coll_insp) AS Coll_insp, Sum(lin_bran_insp) AS Bran_insp  FROM itv WHERE id_itv <> 0 "
     
        If Me.chk_comm Then
            SQL = SQL & "And itv!id_commune = " & Me.cmb_comm & ""
        End If
        If Me.chk_objet Then
            SQL = SQL & "And itv!objet_itv = '" & Me.cmb_objet & "' "
        End If
        If Me.chk_periode Then
            If txt_datedebut = "" Or txt_datefin = "" Then
                Dim rep As Integer
                rep = MsgBox("Veuillez compléter la date de début et de fin", vbOKOnly, "Information")
            Else
                SQL = SQL & "And itv!date_itv BETWEEN #" & Me.txt_datedebut & "# AND #" & Me.txt_datefin & "#"
            End If
        End If
        SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
     
        'Execution de la requête
        Set rst = CurrentDb.OpenRecordset(SQL)
     
        'Remplissage des zones de texte
        sta_nbitv.Value = CStr(rst!total)
        If IsNull(rst!Lin_cmd) Then
            sta_lin_cmd.Value = "0"
        Else
            sta_lin_cmd.Value = CStr(rst!Lin_cmd)
        End If
        If IsNull(rst!Coll_insp) Then
            sta_lin_insp.Value = "0"
        Else
            sta_lin_insp.Value = CStr(rst!Coll_insp)
        End If
        If IsNull(rst!Bran_insp) Then
            sta_bran_insp.Value = "0"
        Else
            sta_bran_insp.Value = CStr(rst!Bran_insp)
        End If
     
        rst.Close
        Set rst = Nothing
    Dans la deuxième partie du code je remplis mes zones de textes avec les valeurs obtenues.

    Ce que je voudrais c'est créer un état pour pouvoir l'imprimer en envoyant les différentes valeurs que j'ai trouvé et je ne sais pas si c'est faisable. Je suis sur access depuis un mois et demi et j'essaye de me dépatouiller comme je peux
    Images attachées Images attachées  

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Bonjour,
    Personnellement pour faire ça, j'imprime directement le formulaire avec un bouton présent sur ce dernier.
    Sur son évènement Click, je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SendKeys ("^(p)")   ' Equivalent à CTRL+P
    Sauf que je choisis quels sont les éléments (ou contrôles) à imprimer ou non.
    Pour cela, il suffit d'aller dans les propriétés de chaque contrôle et dans l'onglet format, modifier la propriété Afficher. On peut choisir "Toujours", "A l'impression" ou "A l'écran".

  5. #5
    Nouveau membre du Club
    Profil pro
    L3 MIAGE
    Inscrit en
    Octobre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : L3 MIAGE

    Informations forums :
    Inscription : Octobre 2009
    Messages : 64
    Points : 28
    Points
    28
    Par défaut
    Oui c'est une solution.
    Mais j'aurai éventuellement voulu rajouter la liste des enregistrements concernés.

    Pour moi alors cette solution ne semble pas envisageable alors

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Comme la structure des données affichées semble la même, seul le nombre d'enr varie en fonction de ton filtre, je ferai un état qui affiche toutes les données et j'appliquerai le filtre lors de l'ouverture avec la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "NomTonRapport", acPreview, , "Ici ton filtre"
    A+

  7. #7
    Nouveau membre du Club
    Profil pro
    L3 MIAGE
    Inscrit en
    Octobre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : L3 MIAGE

    Informations forums :
    Inscription : Octobre 2009
    Messages : 64
    Points : 28
    Points
    28
    Par défaut
    Oui la structure des données à afficher est toujours la même.

    Est ce que je peux passer plusieurs critères pour le filtre ?

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Oui tu peux faire le filtre aussi complexe que nécessaire c'est comme une clause Where de SQL.

    Il te suffit de récupérer dans ton code VBA ce qui génère ta clause Where de ton SQL et l'utiliser comme filtre.

    A+

  9. #9
    Nouveau membre du Club
    Profil pro
    L3 MIAGE
    Inscrit en
    Octobre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : L3 MIAGE

    Informations forums :
    Inscription : Octobre 2009
    Messages : 64
    Points : 28
    Points
    28
    Par défaut
    Merci, je vais essayer alors. C'est la première fois que je m'attaque à des états.

  10. #10
    Nouveau membre du Club
    Profil pro
    L3 MIAGE
    Inscrit en
    Octobre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : L3 MIAGE

    Informations forums :
    Inscription : Octobre 2009
    Messages : 64
    Points : 28
    Points
    28
    Par défaut
    Re bonjour,

    J'ai préparé mon état avec les données que je voudrais afficher.
    Il ne me reste plus qu'à appliquer les différents filtres issus de mon formulaire et c'est à cet endroit que je cale.

    j'ai repris ce que tu m'as dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DoCmd.OpenReport "NomTonRapport", acPreview, , "Ici ton filtre" 'Ton code
     
    DoCmd.OpenReport "NomTonRapport", acPreview, , cmb_commune.value ' le mien pour envoyer le nom de ma commune
    Sauf que mon état s'ouvre et je ne sais pas comment récupérer le ou les paramètres pour les appliquer ?

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    C'est une clause where semblable à du SQL donc il faut mettre un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "NomTonRapport", acPreview, , "[Commune]=" & cmb_commune.value
    si la commune est numérique et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "NomTonRapport", acPreview, , "[Commune]=""" & cmb_commune.value & """"
    si la commune est un texte.

    Il va s'appliquer automatiquement.

    A+

  12. #12
    Nouveau membre du Club
    Profil pro
    L3 MIAGE
    Inscrit en
    Octobre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : L3 MIAGE

    Informations forums :
    Inscription : Octobre 2009
    Messages : 64
    Points : 28
    Points
    28
    Par défaut
    Merci Marot,

    Ca marche pour un paramètre.

    J'ai maintenant essayé de combiné plusieurs paramètres ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoCmd.OpenReport "monEtat", acPreview, , "[id_commune]=" & cmb_comm.Value & " AND [objet] = '" & cmb_objet.Value & "'"
    ' Le premier est numérique, le second chaine de caractère
    Lorsque je l'écris ainsi avec le AND, mon état est vide, lorsque je teste une fois la commune ou l'objet séparément ça marche.

    Quand je vais voir mon état, filtre, il semble que les valeurs sont correctement passées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ([id_commune]=25 AND [objet] = 'monObjet')
    Je ne sais pas trop ce qui cloche

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonjour à tous.
    Ne trouverais tu pas une piste ici:
    http://jdgayot.developpez.com/tutoriels/access/filtre/

  14. #14
    Nouveau membre du Club
    Profil pro
    L3 MIAGE
    Inscrit en
    Octobre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : L3 MIAGE

    Informations forums :
    Inscription : Octobre 2009
    Messages : 64
    Points : 28
    Points
    28
    Par défaut
    Je vais regarder.

    Je continue à tester et persévérer.

    Là ça semble marcher.

    Merci pour le coup de main

  15. #15
    Nouveau membre du Club
    Profil pro
    L3 MIAGE
    Inscrit en
    Octobre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : L3 MIAGE

    Informations forums :
    Inscription : Octobre 2009
    Messages : 64
    Points : 28
    Points
    28
    Par défaut
    J'ai encore une dernière question.
    Maintenant que j'arrive à filtrer sur plusieurs critères.
    Est-ce possible dans mon état de récupérer ces valeurs ?

  16. #16
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    La réponse est oui mais cela dépend de ce que tu veux faire.

    Si tu as toujours le même nombre de critères, la solution la plus simple est d'écrire =[Forms]![NomTonFormParam]![NomTonChampParam] dans la source d'un contrôle TextBox sur ton rapport.

    Si tu as un nombre variable de paramêtres cela va être un peu plus compliqué et il faudrait que tu en dises un peu plus sur la manière dont tu veux les présenter.

    A+

  17. #17
    Nouveau membre du Club
    Profil pro
    L3 MIAGE
    Inscrit en
    Octobre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : L3 MIAGE

    Informations forums :
    Inscription : Octobre 2009
    Messages : 64
    Points : 28
    Points
    28
    Par défaut
    Effectivement c'est une question à laquelle je n'avais pas songé.

    Je pourrais avoir 0, 1,2 ou 3 paramètres.
    0 c'est l'ensemble de ma table.
    Ensuite je peux choisir entre une commune, un objet, et une période (sous forme date de début/date de fin).

    Ainsi je voudrais pouvoir afficher rapport sur la commune telle ou telle concernant cet objet...

    Ca semble compliqué effectivement

  18. #18
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Ok dans ce cas là je créerai la partie 'humaine' du filtre dans un champ Texte caché sur mon formulaire de paramétrage.

    Un truc du genre

    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
    dim filtreEnClair as string
     
    if condition1 then
        if filtreEnClair<>"" then
           filtreEnClair=filtreEnClair & vbNewLine 'Ajouteune ligne pour séparer les paramètres
        end if
     
        filtreEnClaire = filtreEnClair & "Texte associé à condition1"
    end if
     
    if condition2 then
        if filtreEnClair<>"" then
           filtreEnClair=filtreEnClair & vbNewLine
        end if
     
        filtreEnClaire = filtreEnClair & "Texte associé à condition2"
    end if
     
    me.AffFiltreEnClair=filtreEnClair
    Dans ton état tu récupère AffFiltreEnClair comme mentionné plus haut pour le filtre simple.

    A+

  19. #19
    Nouveau membre du Club
    Profil pro
    L3 MIAGE
    Inscrit en
    Octobre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : L3 MIAGE

    Informations forums :
    Inscription : Octobre 2009
    Messages : 64
    Points : 28
    Points
    28
    Par défaut
    Excellente suggestion

    Ca me permet de réaliser ce que je voulais !

    Merci !

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

Discussions similaires

  1. [AC-2010] Sauvegarder les données d'un formulaire dans un état
    Par Kevin80 dans le forum IHM
    Réponses: 7
    Dernier message: 12/04/2011, 19h55
  2. Réponses: 4
    Dernier message: 07/09/2007, 17h47
  3. Réponses: 2
    Dernier message: 02/03/2007, 21h38
  4. Réponses: 1
    Dernier message: 29/05/2006, 11h01

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