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 :

probleme sur etat


Sujet :

IHM

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Points : 8
    Points
    8
    Par défaut probleme sur etat
    Bonjour, voici mon probleme
    j'aimerai créer un état, ou pourquoi pas une petite interface, qui afficherai un etat recapitulatif des commande pour un client selectionné prealablement dans une liste deroulante contenant tous les client possibles. Je ne sais pas comment m'y prendre. merci d'avance

  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
    Le plus simple quand on débute avec Access (et même après) c'est d'utiliser l'assistant de création de rapport pour créer une esquisse puis de travailler à partir de cette esquisse.

    Mais la 1ère étape serait de définir ce que tu veux sur ton rapport. Tu peux faire cela sur une simple feuille de papier.

    Par exemple :

    Pour chaque client
    • Nom et adresse du client

    Pour chaque commande du client
    • Entête de la commande
    • détails de la commande
    • Total de la commande

    Une fois cela déterminé, tu vas pouvoir regarder comment à partir de tes données, obtenir ce dont tu as besoin.

    Pour info il est assez facile de faire des cummuls et des regroupements directement dans les rapports donc dans l'exemple que j'ai fait une requête qui te donnerai :

    Pour chaque ligne de détail de commande
    • Le nom du client
    • L'adresse du client
    • Entête de la commande
    • La ligne de détail

    Te permettrai de réaliser cela.

    Enfin une fois ta source de données crée, tu vas pouvoir créer le rapport.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Merci pour cette réponse rapide.

    Toutefois, je vais essayer de préciser mes besoins afin de pouvoir, je l'espere, mieux comprendre votre aide.

    Voilà, on me demande de réaliser des états (mensuels ou annuels) en sélectionnant préalablement un client.
    Il faut aussi sélectionner une date de fin afin de connaitre les dates sur lesquelles se baser pour l'état.

    Je suis donc parti d'un formulaire vierge me servant d'interface afin de permettre à l'utilisateur de sélectionner les données nécessaires:
    - le client désiré
    - la date de fin
    - annuel ou mensuel

    Un bouton "valider" permettrai de générer la requête et l'état voulu ensuite.


    Je rencontre ensuite différentes difficultés:

    1- Pour le choix entre mensuel ou annuel, je n'arrive pas à faire en sorte que l'utilisateur ne puisse cocher qu'une des 2 cases.
    2 - Ensuite, comment faire pour que l'utilisateur saisisse une date (qui sera la date de fin de l'état récapitulatif) pour ensuite générer la date de début (en fonction de mensuel ou annuel) afin de créer la requête adaptée?
    3 - De plus, comment faire pour que la requête s'adapte automatiquement aux conditions sélectionnées afin d'afficher l'état voulu?

    Encoe merci d'avance pour votre aide.

  4. #4
    Membre averti
    Homme Profil pro
    Amateur
    Inscrit en
    Octobre 2010
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Octobre 2010
    Messages : 205
    Points : 360
    Points
    360
    Par défaut
    Citation Envoyé par dario69 Voir le message
    1- Pour le choix entre mensuel ou annuel, je n'arrive pas à faire en sorte que l'utilisateur ne puisse cocher qu'une des 2 cases.
    Le contrôle plus adapté est "Groupe d'options"

    Cordialement

  5. #5
    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
    2 - Ensuite, comment faire pour que l'utilisateur saisisse une date (qui sera la date de fin de l'état récapitulatif) pour ensuite générer la date de début (en fonction de mensuel ou annuel) afin de créer la requête adaptée?
    Saisie de la date de fin : faire un champ texte dans un formulaire où l'utilisateur va pouvoir saisir sa valeur.

    Calcul de la date de début : Tu peux utiliser DateAdd(), iif() pour faire des calculs conditionnés et obtenir la date qui t'intresse. Un peu de VBA peut être pratique aussi. Pour être plus précis, il faudrait des détails et des exemples de ce que tu veux calculer.

    3 - De plus, comment faire pour que la requête s'adapte automatiquement aux conditions sélectionnées afin d'afficher l'état voulu?
    Ça c'est le plus facile, il suffit de mettre les dates du formulaire comme critère de sélection. Cela se fait très simplement en mettant :

    [forms]![NomTonFormParam]![NomTaDateCritere] dans la ligne "Crìtère" de ta requête pour le champ voulu.

    A+

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Merci pour ces réponses.
    Le groupe d'option marche bien =) .

    Mais pour le reste jai du mal

    Donc encore une fois je vais essayer d'être plus précis...

    J'ai donc réussi à créer un formulaire servant d'interface avec :

    - une liste déroulante pour sélectionner le client
    - un groupe d'option avec le choix entre mensuel et annuel
    - un calendrier où il faut sélectionner la date de fin de l'état
    - un bouton valider

    J'ai essayé de me lancer dans du VBA dans les propriétés "sur clic" mais c'est bien plus dur que sur Excel...

    j'aimerai donc savoir comment coder (ou un autre moyen) pour que, en fonction de ce qu'a saisi l'utilisateur, je génère la date de debut (dateadd semble fonctionner mais impossible pour moi de le vérifier) et ensuite que je génère une requête sur mes tables pour obtenir les champ voulus.

    voila ce que j'ai fait pour la date de début:
    datefin = Calendar.Value
    datedeb = DateAdd(m, -1, datefin)
    (par exemple pour mensuel)

    Désolé si je me répète mais je patauge et encore merci pour votre aide!!

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Je vais essayer de donner encore qql détails ... -_-

    voila ce que jai essayé en vba

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    dim etat1 as integer
    dim etat2 as integer
    dim client as string
    dim datedeb as date
    dim datefin as date
     
    etat1=option1.value
    etat2=option2.value (option 1 et 2 etant mes cases d'option)
     
    client=modifiable.value (modifiable etant la liste deroulante)
     
    'les valeurs si coché de option 1 est 1 et de option2 est 2
    etat1, 2 et client ne prennent pas les valeur
    erreur "expression sans parametre"

    donc ensuite je ne peux pas faire si etat1=1 alr mensuel etc...

    ensuite, si jai bien compri, il faudra que je code ma requete avec mes variable??

    du genre select client_lib=client (client etant ma variable)

    et apres pour afficher l'état qui va avec, alors la, je ne sais plus!!!

  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
    Calcul de la date de fin

    Une astuce que j'utilises assez souvant c'est de mettre un champ texte invisible (c'est une des propriétés du champ) dans mon formulaire où je calcule mon paramètre. Pendant la phase de développement je le laisse visible et je peux ainsi facilement vérifier si le résultat est bon.

    Dans ton cas, tu as déjà un champ pour la date de début, tu peux donc mettre comme valeur dans le champ (un peu comme une formule de Excel) =iif(not isnull([Calendar]);dateAdd("m",1,[Calendar];Null). (Access va traduire le nom des fonctions en français et c'est bien iif avec 2 "i".)

    Tu peux ensuite exploiter ce champ comme critère de ta requête (voir mon post du 11/04/2012 14h18).

  9. #9
    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
    1. Tu fais ta requête sans t'occuper de la sélection, juste pour qu'elle te donne les données que tu attends.
    2. Après tu va ajouter les critères dans les lignes de critère de la requête
      • Pour le client : [forms]![NomTonFormParam]![Modifiable] dans la ligne "Crìtère" de ta requête pour le champ voulu.
      • Pour la date de début : [forms]![NomTonFormParam]![Calendar] dans la ligne "Crìtère" de ta requête pour le champ voulu.
      • Pour la date de fin : [forms]![NomTonFormParam]![DateFin] dans la ligne "Crìtère" de ta requête pour le champ voulu.
      • Pour Etat1 : [forms]![NomTonFormParam]![option1] dans la ligne "Crìtère" de ta requête pour le champ voulu.
      • Pour Etat2 : [forms]![NomTonFormParam]![option1] dans la ligne "Crìtère" de ta requête pour le champ voulu.

    Il faudra remplacer [NomTonFormParam] par le nom du formulaire que tu as créé.

    Note que pour arriver à ce résultat je n'ai pas écrit une seule ligne de VBA. J'ai utilisé des fonctions et les mécanismes par défaut d'Access.

    Note bis : Il est recommandé de donner des noms significatifs aux objets car cela facilite la compréhension du code. Par exemple, le champ Modifiable serait avantagesement nommé ListeClient ou simplement Client ou comme j'aime à le faire ChoixClient même chose pour Calendar que je nommerai DateDebut.

    Et enfin on ne peut pas utiliser directement une variable dans une requête. On peut, par contre, créer du code SQL à partir de variable en VBA et l'exécuter ou utiliser une fonction publique pour lire le contenu d'une varibale dans une requête.

    A+

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    Merciiiiii tout s'explique!!

    Le mieux, c'est que je ne me casse pas la tête avec du vba sous access ou je ne comprend rien

    Juste une petite précision? lol

    Mon bouton génere la requete, et maintenant pour afficher l'état qui va avec et pouvoir le mettre en forme selon mon bon vouloir??

    ca devrait etre une formalité

    En tout cas, trop fort encore merci !

  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
    Le mieux, c'est que je ne me casse pas la tête avec du vba sous access ou je ne comprend rien.
    Je dirai plutôt que dans l'immédiat tu n'as pas besoin de VBA mais VBA permet un tas de chose que les fonctionnements standard ne permettent pas ou permettent plus difficilement. Par exemple, tu ne peux pas avec les outils standards ouvrir plusieurs fois le même formulaire cela nécessite du VBA.

    Mon bouton génere la requete, et maintenant pour afficher l'état qui va avec et pouvoir le mettre en forme selon mon bon vouloir??
    Je ne suis pas certain de comprendre ta question. Si tu veux créer un rapport (ou état) à partir d'une requête, le plus simple est d'utiliser l'assistant de création de rapport. Il fait un travail très correct pour créer un rapport acceptable. Après tu peux modifier la présentation selon tes goûts.

    Pour ouvrir le rapport, tu peux utiliser l'assitant de création de bouton (juste glisser le bouton dans ton fomulaire pour l'activer) et suivre les étapes.

    Le code généré n'est pas 'optimal' mais il est très suffisant pour commencer.

    A+

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Points : 8
    Points
    8
    Par défaut
    J'ai resolu mes problemes en passant par deux interfaces differentes =)

    La premiere permet de selectionner la date de fin et le type mensuel/annuel pour ensuite passer au 2e formulaire en prenant en compte les enregistrement.

    Le 2e formulaire propose la liste déroulante des clients et execute la requete finale et l'état correspondant

    Mon probleme, et j'espere le dernier que je rencontrerait pour ce sujet, est de creer une valeur "tout client" et ma requete n'aaura alors aucun critère de selection...

    Qui sait comment faire?

    Merci (au passage indiquez moi comment faire pour mettre [résolu] sur la conversation)

  13. #13
    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
    D'abord la réponse facile : pour "résolu" c'est le bouton "Résolu" en bas de la discussion.

    Pour le tous, là c'est un peu plus complexe et tel que tu l'as décrit c'est franchement plus compliqué.

    En fait dans ta question il y a 2 questions :
    1. Ajouter "Tous" à la aux choix
    2. Faire en sorte que "Tous" donne tous les resultats, comme s'il n'y avait pas de filtre.


    La réponse à la question 1, la plus simple, est qu'il n'y ai pas vraiment de choix tous mais que l'abscence de choix soit l'équivalent de "tous". Ceci évite d'avoir à ajouter artificiellement un "tous" à une liste qui n'en contient pas. Peux-tu vivre avec cette contraite ou tiens-tu ABSOLUMENT a avoir un "tous" dans ta liste ?

    La réponse à la question 2 peux on peut :
    1. Modifier les critères de la requête
    2. Modifier les requête elle-même.


    La première solution est la plus facile. Il suffit de modifier la requête de manière à ce que le filtre appliqué sur les données renvoit toutes les données comme s'il n'y avait pas de filtre.

    La seconde solution consiste a enlever le filtre de la requête, ce qui veut dire modifier le SQL lui-même. C'est faisable mais plus compliqué.

    Pour la première on remplace l'égalité par la fonction Like """" & [TonParam] & """".

    et comme paramètre pour tous on fourni "*". La fonction Like cherche une chaîne de caractère qui ressemble au paramètre qui lui est passer. Like "a" va afficher tous les enregistrements où la valeur du champ testé est "a".

    Like possède ce qu'on appèle en français des caractères jockers (en anglais : wildchar). Ce sont des caractères qui remplacent n'importe quel caractère.

    Les plus utilisés sont "?" et "*". le "?" remplace 1 caractère mais le "*" remplace une série de caractères donc Like "*" revient à écrire "Sélectionne tous les enregistrements qui contiennent du texte" c-à-d généralement tous les enregistrements de la BD.

    En conclusion si dans ta requête tu as =[tonParam] le remplacer par Like """" & [tonParan] & """" en changera rien au résultat si ton param est complètement défini. Par exemple si ton paramètre vaut "René", ="René" et like "René" vont donner exactement le même résultat.

    Une note de prudence, "Like" est plus lent que "=", il est donc possible que sur un gros volume de données ta requête s'éxécute moins vite mais généralement cela ne se remarque même pas.

    A+

Discussions similaires

  1. [WD16] Probleme de dessin sur etat
    Par lololebricoleur dans le forum WinDev
    Réponses: 6
    Dernier message: 13/07/2011, 22h10
  2. Probleme canevas sur Etat
    Par toto222 dans le forum IHM
    Réponses: 4
    Dernier message: 13/10/2009, 15h29
  3. probleme exportation Etat sur Excel 2007
    Par Nanouche dans le forum VBA Access
    Réponses: 1
    Dernier message: 18/12/2007, 09h42
  4. probleme gestion no data sur etat
    Par gui-llaume dans le forum VBA Access
    Réponses: 1
    Dernier message: 05/12/2007, 12h36
  5. export état vers word problème sur l'en-tête
    Par bucasso dans le forum Access
    Réponses: 7
    Dernier message: 08/09/2006, 16h51

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