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 :

Ouvrture d'un formulaire à partir d'une requete paramétrée [AC-2003]


Sujet :

IHM

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 205
    Points : 78
    Points
    78
    Par défaut Ouvrture d'un formulaire à partir d'une requete paramétrée
    bonjour,

    je viens de créer un formulaire de recherche sur mon application qui doit me ramener unjeu d'enrégistrement en fonctionde mon critère de recherche.

    EN fonction du critère de recherche, il y a un etat spécifique qui doit s'afficher.
    Aussi j'ai fais ma requete sans paramètre com suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Produit.Designation, [Détail vente].Qté, [Détail vente].prix_unit, [Détail vente].Unité, Client.Nom & "  " & Client.Prénoms AS client, Vente.datevte
    FROM (Client INNER JOIN Vente ON Client.Codclt = Vente.codclt) INNER JOIN (Produit INNER JOIN [Détail vente] ON Produit.Codprod = [Détail vente].Codprod) ON Vente.codvte = [Détail vente].Codvte;
    Mon formulaire a trois critères de recherche à savoir:
    -un client;
    -un produit;
    -une periode.
    on peut combiner cè trois critères de recherche cè a dire rechercher les achats d'un client sur une période pour un produit donné.
    j'utilise 3 cases à cocher sur mon formulaire
    lorsque je clique sur la case:
    recherche à partir d'un client
    , une zone de liste déroulete s'affiche et je choisi le client sur lequel doit se porter la recherche. Au niveau du formulaire, tout se deroule normalement avec les requetes:
    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
    If Me.rechclient Then
         If Me.rechproduit Then
                    sql = "SELECT [Détail vente].coddetvte, Produit.Designation as produit, [Détail vente].Qté as [quantité], [Détail vente].prix_unit,[Détail vente].Unité as [prix unitaire], Client.Nom & """" & Client.Prénoms as clients, Vente.Datevte as [date achat] FROM Client INNER JOIN (Vente INNER JOIN (Produit INNER JOIN [Détail vente] ON Produit.Codprod = [Détail vente].Codprod) ON Vente.Codvte = [Détail vente].Codvte) ON Client.Codclt = Vente.Codclt where client.codclt= " & Me.client & "  And produit.Codprod = " & Me.produit & ""
                    Me.det_vente.RowSource = sql
                    Me.det_vente.Requery
                    Exit Sub
                Else
                    sql = "SELECT [Détail vente].coddetvte, Produit.Designation as produit, [Détail vente].Qté as [quantité], [Détail vente].prix_unit,[Détail vente].Unité as [prix unitaire], Client.Nom & """" & Client.Prénoms as clients, Vente.Datevte as [date achat] FROM Client INNER JOIN (Vente INNER JOIN (Produit INNER JOIN [Détail vente] ON Produit.Codprod = [Détail vente].Codprod) ON Vente.Codvte = [Détail vente].Codvte) ON Client.Codclt = Vente.Codclt where client.codclt= " & Me.client
                    Me.det_vente.RowSource = sql
                    Me.det_vente.Requery
                 Exit Sub
           End If
     
    Else
        If Me.rechproduit Then
     
                sql = "SELECT [Détail vente].coddetvte, Produit.Designation as produit, [Détail vente].Qté as [quantité], [Détail vente].prix_unit,[Détail vente].Unité as [prix unitaire], Client.Nom & """" & Client.Prénoms as clients, Vente.Datevte as [date achat] FROM Client INNER JOIN (Vente INNER JOIN (Produit INNER JOIN [Détail vente] ON Produit.Codprod = [Détail vente].Codprod) ON Vente.Codvte = [Détail vente].Codvte) ON Client.Codclt = Vente.Codclt where produit.codprod= " & Me.produit
                    Me.det_vente.RowSource = sql
                    Me.det_vente.Requery
     
                Exit Sub
            'End If
     
        Else
     
                sql = "SELECT [Détail vente].coddetvte, Produit.Designation as produits, [Détail vente].Qté as [quantité], [Détail vente].prix_unit as [prix unitaire],[Détail vente].Unité as [prix unitaire], Client.Nom & """" & Client.Prénoms as clients, Vente.Datevte as [date achat]FROM Client INNER JOIN (Vente INNER JOIN (Produit INNER JOIN [Détail vente] ON Produit.Codprod = [Détail vente].Codprod) ON Vente.Codvte = [Détail vente].Codvte) ON Client.Codclt = Vente.Codclt"
                Me.det_vente.RowSource = sql
                Me.det_vente.Requery
     
        End If
    End If
    je sais c'est pas la meilleur manière mais bon!

    ce code est sous un bouton "recerche" et les resultats s'affiche das une zone de liste.

    j'ai sur mon formulaire un autre bouton:"imprimer".
    je veux qu'en cliqunt sur imprimer, il s'affiche un etat qui affiche seulement les informations de ma zone de liste et non de toutes les données.

    comment m'y prendre?

    y a t'il un moyen e recuperer les valeurs de mes zones des listes déroulantes ou de mes zone de texte pour les adjoindre à ma requete qui aliment mon état?
    Merci de votre aide, je suis complètement bloqué.

    je precise que c'est mon premier projet sur access et qu je maitrise pas grande chose.

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    ton besoin est un classique d'access, un exemple dans ce bon vieux tuto :
    http://cafeine.developpez.com/access...echerchemulti/

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 205
    Points : 78
    Points
    78
    Par défaut
    ok, merci, je vais prendre connaissance et je te fais signe.

  4. #4
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 205
    Points : 78
    Points
    78
    Par défaut
    j'ai deja lu ce tutoriel. j'ai voulu le refaire, mais je suis pas arrivé. Mais en fait, ce tuto ne resoud pas mon problème en ce sens que c'est sur l'etat que je veux faire afficher mes resultats de ma requete paramétrée. j'arrive deja a faire ma recherche sur un fomulaire. Seulement, j'arrive pas a afficher mes resustats sur un etat. Il m'affiche tous les résultats sans tenir compte de mes critères de recherche.

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Alord ci je comprends ta question; tu doit creer apartir de la requete selectioné au cours de statement (if ...end) une table tempoaire (source de donnée de ton etat) et qui sera detruit à la fermeture d'etat chargé .
    c'est une piste , mais un peu lourd

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonjour,
    Citation Envoyé par aldama Voir le message
    je precise que c'est mon premier projet sur access et qu je maitrise pas grande chose.
    Dans ce cas on peut envisager de reprendre à la base :
    Une table --> tbl_Clients avec quelques champs :
    ID —> NuméroAuto
    NomRue, CP, Ville —> Texte (Importe peu)
    Un état, rpt_Clients qui reprend l'intégralité de cette table.

    Un formulaire avec une liste —> Ta_Liste qui reprend également l'intégralité de cette table.

    Un premier bouton de commande —> cmd_TonEtat

    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
    Private Sub cmd_TonEtat_Click()
    On Error GoTo Err_cmd_TonEtat_Click
      Dim strListe As String
      Dim strCritere As String
      Dim varItem As Variant
        'Rien de sélectionné --> On ne fait rien
        If Me!Ta_Liste.ItemsSelected.Count = 0 Then
           Me.cmd_TonEtat.Caption = "Vraiment rien de sélectionné"
         Exit Sub
        End If
         'Cherche la sélection
         For Each varItem In Me!Ta_Liste.ItemsSelected
            'Capture de chaque ID sélectionné
            strListe = strListe & _
                Me!Ta_Liste.Column(0, varItem) & ","
         Next varItem
            'On enlève la virgule en trop
            strListe = Left$(strListe, Len(strListe) - 1)
         'On ouvre sur la sélection
         strCritere = "[ID] IN (" & strListe & ")"
          DoCmd.OpenReport "rpt_Clients", acPreview, , strCritere
        'Désélectionner toutes les lignes dans la zone de liste
      Dim IntCompt As Integer
      For IntCompt = 0 To Me!Ta_Liste.ListCount - 1
            Me!Ta_Liste.Selected(IntCompt) = False
      Next IntCompt
     Me.cmd_TonEtat.Caption = "Rien de sélectionné"
    Exit_cmd_TonEtat_Click:
        Exit Sub
    Err_cmd_TonEtat_Click:
        MsgBox Err.Description
        Resume Exit_cmd_TonEtat_Click
    End Sub
    Sur légende de ce bouton de commande on place : Aucune sélection

    Sur Click de —>Ta_Liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Ta_Liste_Click()
    Dim varItem As Variant
     Me!cmd_TonEtat.Caption = ""
        For Each varItem In Me!Ta_Liste.ItemsSelected
            Me!cmd_TonEtat.Caption = Me!cmd_TonEtat.Caption & _
                Me!Ta_Liste.Column(1, varItem) & ", "
        Next varItem
    End Sub
    On peut voir pour tout sélectionner par un bouton de commande—> cmdSelecTous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub cmdSelecTous_Click()
    Dim i As Long
    For i = 0 To Me.Ta_Liste.ListCount - 1
        Me.Ta_Liste.Selected(i) = True
    Next i
    Me.cmd_TonEtat.Caption = "Tout est sélectionné"
    End Sub
    Cordialement.

  7. #7
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 205
    Points : 78
    Points
    78
    Par défaut
    oui ALOSOMED, c'est un peu ca.

    merci francishop, j'ai lu tes instructions, c'est un peu ce qe je demande, seulement je le testerai le lundi car je pars en voyage ce vendredi pour rentrer le dimanche. je te ferai signe après.

    par contre j'ai lu sur un forum les indications suivante:

    - déclarer une variable publique dans un module sous la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public message() as variant
    - créer une fonction publique toujours dans un module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function getmessage(i as long) as variant
    'renvoie la valeur à l'indice i
    getmessage=message(i)
    end function
    - modfier ma requete en ajoutant une close where sous la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where produit.codprod=getmessage(1)
    - dans le bouton exécuter, mettre le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    redim message(1)
    message(1)= IDE_form ' la valeur dans le formulaire
    docmd.openreport ...
    j'ai suivit ces différentes étapes,
    ma requete est devenu donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Produit.Designation, [Détail vente].Qté, [Détail vente].prix_unit, [Détail vente].Unité, Client.Nom & "  " & Client.Prénoms AS client, Vente.datevte
    FROM (Client INNER JOIN Vente ON Client.Codclt = Vente.codclt) INNER JOIN (Produit INNER JOIN [Détail vente] ON Produit.Codprod = [Détail vente].Codprod) ON Vente.codvte = [Détail vente].Codvte
    where produit.codprod=getmessage(1)
    le problème c'est que mon etat s'affiche mais sans aucune donnée.
    je sais pas si j'ai manqué une étape surtout qu'aucun message d'erreur ne d'affiche.
    j'avoue que cette methode est facile a réaliser, seulement ca marche pas, a moins que j'ai maqué une étape.
    j'attends toujours des propositons, merci

  8. #8
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    inutile de créer une table temporaire, un état fonctionne parfaitement avec une requête.

    Citation Envoyé par alasomed Voir le message
    Alord ci je comprends ta question; tu doit creer apartir de la requete selectioné au cours de statement (if ...end) une table tempoaire (source de donnée de ton etat) et qui sera detruit à la fermeture d'etat chargé .
    c'est une piste , mais un peu lourd

  9. #9
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 205
    Points : 78
    Points
    78
    Par défaut
    ok, merci a vous,
    j'ai fini par trouver mon erreur, ca marche maintenant avec ma métode.

    par contre sur mon formulaire, j'ai mis deux DTPicker pour preciser mon intervalle de ma période.

    seulement, je sais pas recuperer la valeur contenu dans mes DTPicker.

    voici comment j'ai essayé de récupérer la valeur mais ca marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "SELECT [Détail vente].coddetvte, Produit.Designation, [Détail vente].Qté, [Détail vente].prix_unit,[Détail vente].Unité, Client.Nom & """" & Client.Prénoms, Vente.Datevte FROM Client INNER JOIN (Vente INNER JOIN (Produit INNER JOIN [Détail vente] ON Produit.Codprod = [Détail vente].Codprod) ON Vente.Codvte = [Détail vente].Codvte) ON Client.Codclt = Vente.Codclt where vente.datevte between # & Format(Date(dete_debut), ""dd/mm/yyyy"") & ""# and # & format(date(date_fin),""dd/mm/yyyy"") & ""#"
    le resultat ne me ramène rien.

    comment dois écrire pour que mes DTPicker me ramène des valeur.
    merci

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/04/2008, 17h48
  2. Réponses: 4
    Dernier message: 23/01/2008, 12h16
  3. Réponses: 18
    Dernier message: 03/01/2006, 17h53
  4. Réponses: 6
    Dernier message: 19/11/2004, 16h52
  5. [TQuery]Réaliser une requete à partir d'une requete
    Par Eric SAULNIER dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/07/2004, 12h00

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