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 :

Formulaire feuille de données par date [AC-2007]


Sujet :

Access

  1. #1
    Membre à l'essai

    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2014
    Messages : 36
    Points : 19
    Points
    19
    Billets dans le blog
    1
    Par défaut Formulaire feuille de données par date
    Bonjour,

    Je cherche à sortir tout les Procés Verbaux que j'ai dressé pour un mois entier dans un formulaire et pour une année entiére dans un autre.
    Tout mes PV avec les informations que je cherche à sortir sur dans une table PV.

    Avec la possibilité de choisir le mois et l'année en question.

    J'ai donc essayé de créer un formulaire avec des zones de texte pour choisir le mois et l'année.

    J'ai également fait un sous formulaire en mode feuille de données qui m'affiche les information que je souhaite.
    J'aimerais maintenant croiser les 2 de maniére à afficher que les PV dans la bonne période.

    Si une autre solution plus simple existe je suis preneur parce que déjà la mon sous formulaire est modifiable j'ai l'impression...
    Comme si je pouvais changer la date et le numéro de mes PV.

    Cordialement,
    Papallo

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Peut-être qu'un contrôle de type liste serait plus adapté qu'un sous-formulaire, cela dépend de la nature des informations à afficher.
    Si oui, alors une solution pas trop compliquée existe :
    http://cafeine.developpez.com/access...echerchemulti/

    En mettant une liste déroulante permettant de sélectionner le mois et une autre l'année.

    Est-ce que cela correspond à votre problème ?

    Sinon, il est possible d'adapter le même raisonnement avec un sous-formulaire en mode feuille de données, dont la requête source est modifiée de la même façon que la requête source de la liste est modifiée dans le tutoriel. Pour éviter les modifications du sous-formulaire, mettre la propriété "Données/Modif Autorisée" à "Non" (idem pour "Suppr autorisée" si besoin)

    Bon courage,

    minuscheri

  3. #3
    Membre à l'essai

    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2014
    Messages : 36
    Points : 19
    Points
    19
    Billets dans le blog
    1
    Par défaut
    Merci à toi, tu m'as permis de trouver la solution!

    J'ai bien fait une liste pour sortir les résultats et je demande le mois et l'année directement dans la requete.
    Comme ca l'utilisateur voit s'afficher : Pour quel mois voulez vous consulter des PV?

    En revanche je n'arrive pas à compter le nombre de PV affiché dans mon champs liste.
    J'ai essayé pas mal de choses et le seul truc que j'arrive à faire resortir c'est les nombre total de PV dans ma base.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Tant mieux si ça marche ! Pour compter les enregistrements, tu peux utiliser la méthode recordCount sur le recordset de ta liste et le mettre dans un contrôle étiquette par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.controleEtiquette.Caption = Me.listeDesPV.Recordset.RecordCount
    Place cette ligne de code au bon endroit et le texte se mettra à jour à chaque changement de critère de la requête.

    minuscheri

  5. #5
    Membre à l'essai

    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2014
    Messages : 36
    Points : 19
    Points
    19
    Billets dans le blog
    1
    Par défaut
    Malheuresement je débute en VBA et je ne vois pas bien comment me servir de ton code.
    Le controle de l'étiquette c'est le nom que je lui ai donnée?

    Et sais-tu si avec ma solution il y a possibilité d'afficher le mois et l'année auquel se référe mon formulaire?
    Je sais que l'utilisateur vient de les taper mais c'est surtout pour l'impression.

    Voici ma requête actuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT dateEx
    FROM dateEx
    WHERE MONTH([dateEx])=[Veuillez taper le mois ( Ex : 11 )] And YEAR([dateEx])=[Veuillez taper l'année]

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Points : 12
    Points
    12
    Par défaut
    Tout d'abord, hors sujet, je trouve bizarre que ta table et ton champ "dateEx" aient le même nom. C'est un coup à se mélanger les pinceaux !

    À mes yeux la solution la plus simple est :

    Tu crées dans ton fomulaire principal deux listes déroulantes : une pour le mois (choixMois) et une pour l'année (choixAnnee). Déjà, c'est plus fiable que de faire entrer les valeurs par l'utilisateur, qui peut très bien mettre "13" ou "cjzeofze" comme mois, la fenêtre de demande de paramètre n'intégrant pas de fonctionnalité de validation des données. La source de tes listes déroulantes devrait être un truc dans ce goût là : (le DISTINCT sert à avoir des valeurs uniques et non plein de fois la même valeur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT MONTH(dateEx) AS moisEx FROM dateEx;
    (pareil avec YEAR)

    Ensuite, dans l'événement "Après MAJ" de chacune des listes déroulantes, tu places le code suivant :
    Et tu crées une procédure majListePV :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub majListePV()
        Me.listePV.rowsource = "SELECT dateEx FROM dateEx WHERE MONTH([dateEx])=" & Cstr(Me.choixMois.Value) & "  And YEAR([dateEx])=" & Cstr(Me.choixAnnee.Value) & ";"
        Me.listePV.Requery
        Me.nombrePV.Caption = Me.listePV.Recordset.RecordCount
    End Sub
    On suppose que la liste s'appelle "listePV", que la requete s'appelle "filtrePVparDate" et que l'étiquette affichant le nombre de PV s'appelle "nombrePV"

    Tu peux t'inspirer de cela pour afficher le mois et l'année sélectionnés dans une étiquette si tu veux, mais pour l'impression il vaut mieux toujours passer par un état.

    Voilà, j'ai essayé de faire avec le moins de code possible !

  7. #7
    Membre à l'essai

    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2014
    Messages : 36
    Points : 19
    Points
    19
    Billets dans le blog
    1
    Par défaut
    Tout marche bien dans ta solution mis à part la partie pour compter, j'ai une erreur sur le caption.

    "membre de méthode ou de donnée introuvable".

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Points : 12
    Points
    12
    Par défaut
    Caption existe sur les étiquettes et non sur les zones de texte ; n'aurais-tu pas créé une zone de texte plutôt qu'une étiquette ?

  9. #9
    Membre à l'essai

    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2014
    Messages : 36
    Points : 19
    Points
    19
    Billets dans le blog
    1
    Par défaut
    En effet ca va mieux avec une etiquette! Mais un moment j'ai 3 résultat et il m'en compte 1 seul ou alors quand j'en ai beaucoup il m'affiche :
    "L'objet est incorrect ou n'est plus défini."


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Me.ListeFI.RowSource = "SELECT [T-REPERE-FILTRE].[REPERE FILTRE], [T suivi changement filtre d'eau].[date changement], [T suivi changement filtre d'eau].[n° ot] FROM [T suivi changement filtre d'eau] INNER JOIN [T-REPERE-FILTRE] ON [T suivi changement filtre d'eau].[REPERE FILTRE]=[T-REPERE-FILTRE].[N° FILTRE] WHERE [T-REPERE-FILTRE].[REPERE FILTRE] like " & CStr(Me.choixTranche.Value) & " & " * "  And YEAR([date changement])=" & CStr(Me.choixYear.Value) & ";"
        Me.ListeFI.Requery
        'Me.nombreFI.Caption = Me.ListeFI.Recordset.RecordCount
    Dans choixTranche j'ai une liste de chiffre de 1 à 10 et dans repére filtre des choses genre 5 APQ 3ZR.

    Quand j'essaye j'ai une erreur de type 13.

    Je sens que je vais pas y arriver! J'enchaine les problémes la.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Points : 12
    Points
    12
    Par défaut
    Je sens que je vais pas y arriver! J'enchaine les problémes la.
    Ne nous énervons pas ! Chaque problème a une solution, toujours.Si tous les développeurs avaient arrêté de coder au premier bug, on en serait encore aux pots de yaourt et aux ficelles pour communiquer. Essaye de bien utiliser le déboguage pour voir d'où viennent tes problèmes.

    Ton critère LIKE requiert une chaîne de caractères, alors que ton critère de date requiert un nombre. De plus, tu constateras que l'étoile dans ta requête n'est pas prise en compte comme il faut, il y a trop de guillemets. Je te conseille la lecture de cette page : http://drq.developpez.com/vb/tutoriels/String/.

    La requête que je t'avais donnée était bien pour des critères numériques, comme les mois et dates. Mais pour les critères en chaînes de caractères il faut les encadrer de guillemets. Seulement, si tu mets des guillemets direct, ils vont être interprétés comme la fin de l'instruction SQL, car elle est elle-même une chaîne de caractères. Il faut donc utiliser Chr(34) qui est un guillemet, mais vu comme un caractère lambda et non interprété comme un guillemet. Oui, ça a l'air compliqué comme ça .

    N.B. : Tu trouveras un peu partout des méthodes à base d'apostrophes ou de doubles guillemets. Je te conseille de privilégier l'approche avec des Chr(34) qui est plus fiable et (je trouve) plus lisible.

    De plus, il ne faut pas laisser d'espace entre ton critère et l'étoile.

    Ta requête devient donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT [T-REPERE-FILTRE].[REPERE FILTRE], [T suivi changement filtre d'eau].[date changement], [T suivi changement filtre d'eau].[n° ot] FROM [T suivi changement filtre d'eau] INNER JOIN [T-REPERE-FILTRE] ON [T suivi changement filtre d'eau].[REPERE FILTRE]=[T-REPERE-FILTRE].[N° FILTRE] WHERE [T-REPERE-FILTRE].[REPERE FILTRE] like " & Chr(34) & CStr(Me.choixTranche.Value) & "*" & Chr(34) & " And YEAR([date changement])=" & CStr(Me.choixYear.Value) & ";"

  11. #11
    Membre à l'essai

    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2014
    Messages : 36
    Points : 19
    Points
    19
    Billets dans le blog
    1
    Par défaut
    Je me servais déjà du Chr(34) pour sauter des ligner mais sans savoir à quoi cella correspondait.

    Merci de ton aide! Je comprend ce que je fais et j'y arrive!

    En ce qui concerne l'etiquette, je ne m'en etait jamais servi avant et je ne sais pas comment faire. Je l'associe à ma listePV mais quand j'utilise le formulaire elle me donne un total de 1 la premiére fois et la 2eme fois j'ai une erreur du type : "l'objet est incorrect ou n'est plus défini".

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Points : 12
    Points
    12
    Par défaut
    Peut-être que le plus simple serait que tu mettes ta base en pièce jointe du coup ... Parce que du coup j'ai du mal à saisir le problème là !

    EDIT : Au fait, tu fais comment pour sauter des lignes avec des guillemets ? Chr(10) plutôt c'est ça ?

  13. #13
    Membre à l'essai

    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2014
    Messages : 36
    Points : 19
    Points
    19
    Billets dans le blog
    1
    Par défaut
    Je ne peux pas mettre la BDD en piece jointe désolé.

    Mais le probléme vient du fait que je ne sais pas me servir d'une etiquette, voilà tout.
    Je la créé, je met en legende "total:". Il m'indique qu'il y a une erreur parce que l'etiquette n'est pas associé. Alors je l'associe à listePV qui m'affiche justement la liste de mes PV.
    Je l'appel nombrePV, ce qui correspond à ce que j'appel dans mon caption et aprés tu connais les symptomes.
    Le caption compte bien le nombre d'ocurences d'une liste?

    Chr(13) & Chr(10) pour retour à la ligne, j'ai confondu.

  14. #14
    Membre à l'essai

    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2014
    Messages : 36
    Points : 19
    Points
    19
    Billets dans le blog
    1
    Par défaut
    J'ai réussi!!

    Je ne sais pas trop comment...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.nombreFI.Caption = Me.ListeFI.ListCount - 1
    Le -1 c'est parce que j'ai une ligne avec la régende.

    A force d'essayer...

    Merci à toi pour ton aide! Je clic sur le résolu.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/06/2011, 16h38
  2. Extraire données par date du jour
    Par Hombe dans le forum Oracle
    Réponses: 6
    Dernier message: 08/11/2006, 11h14
  3. MFC dans formulaire feuille de données
    Par Smint dans le forum Access
    Réponses: 2
    Dernier message: 08/10/2006, 14h38
  4. Masquer champs en mode feuille de données par macro
    Par martino_fr dans le forum Access
    Réponses: 1
    Dernier message: 22/09/2006, 09h57
  5. Formulaire Feuille de données
    Par Bes74 dans le forum Access
    Réponses: 1
    Dernier message: 20/07/2006, 16h35

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