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 de recherche multitables


Sujet :

Access

  1. #1
    Membre du Club

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 117
    Points : 65
    Points
    65
    Par défaut Formulaire de recherche multitables
    Bonjour tout le monde!
    Alors voilà, je suis en train de bosser sur une appli' qui apparament fonctionne bien.
    Mais pour qu'elle soit encore plus pratique, j'aimerais pouvoir proposer dans mon menu, un formulaire de recherche multi-tables.

    J'ai un peu fouiné sur le site mais je n'ai pas trouvé grand chose à ce sujet. J'ai bien essayé d'adapter le projet de Cafeïne:
    http://cafeine.developpez.com/access...echerchemulti/
    à mon appli' mais je n'y arrive pas. Son formulaire ne repose que sur UNE seule table. Donc..problème.

    Est-ce que qq'un pourrait m'aider?

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Il suffit juste dans son tuto de changer les différentes requetes SQL en utilisant des jointures pour que le projet de caféine soit compatible avec le tien

    Enfin je pense Après on sait pas ce que tu veux exactement
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Membre du Club

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 117
    Points : 65
    Points
    65
    Par défaut
    J'y ai pensé bien sur... Mais il n'y a pas que les requetes SQL à changer, c'est bien pour cela que je n'y arrive pas.

    Voilà ce que j'ai fais pour le SQL:
    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
    Private Sub Form_Load()
     
    Dim ctl As Control
     
    For Each ctl In Me.Controls
        Select Case Left(ctl.Name, 3)
            Case "chk"
                ctl.Value = -1
     
            Case "lbl"
                ctl.Caption = "- * - * -"
     
            Case "txt"
                ctl.Visible = False
                ctl.Value = ""
     
            Case "cmb"
                ctl.Visible = False
     
        End Select
    Next ctl
     
    Me!lstResults.RowSource = "SELECT ProduitsClient.id_ProduitsClient, TypesProduitsClient.TypeProduits, ProduitsClient.Immatriculation, ProduitsClient.Marque, ProduitsClient.Taille, ProduitsClient.Couleur, Clients.Nom, Clients.Prénom FROM Clients" & _
                              "INNER JOIN (TypesProduitsClient" & _
                              "INNER JOIN ProduitsClient" & _
                              "ON TypesProduitsClient.id_TypesProduitsClient = ProduitsClient.id_TypesProduitsClient)" & _
                              "ON Clients.CodeClient = ProduitsClient.CodeClient;"
    Me!lstResults.Requery
     
    End Sub
    Et ce que j'ai fais pour le reste:

    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
    Private Sub RefreshQuery()
    Dim SQL As String
    Dim SQLWhere As String
     
    SQL = "SELECT CodMedia, Titre, Auteur, Famille, Type FROM Medias Where Medias!CodMedia <> 0 "
     
    If Not Me!chkProduit Then
        SQL = SQL & "And ProduitsClient!id_TypesProduitsClient like '*" & Me!cmbProduit & "*' "
    End If
    If Not Me!chkImmatriculation Then
        SQL = SQL & "And ProduitsClient!Immatriculation = '" & Me!txtImmatriculation & "' "
    End If
    If Not Me!chkMarque Then
        SQL = SQL & "And ProduitsClient!Marque like '*" & Me!cmbMarque & "*' "
    End If
    If Not Me!chkTaille Then
        SQL = SQL & "And ProduitsClient!Taille like '*" & Me!cmbTaille & "*' "
    End If
    If Not Me!chkNom Then
        SQL = SQL & "And Clients!Nom = '" & Me!txtNom & "' "
    End If
    If Not Me!chkPrenom Then
        SQL = SQL & "And Clients!Prénom = '" & Me!txtPrenom & "' "
    End If
     
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
     
    SQL = SQL & ";"
     
    Me!lblStats.Caption = DCount("*", "ProduitsClient", SQLWhere) & " / " & DCount("*", "ProduitsClient")
    Me!lstResults.RowSource = SQL
    Me!lstResults.Requery
    Tu peux voir que cette ligne n'appelle qu'une seule table.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me!lblStats.Caption = DCount("*", "ProduitsClient", SQLWhere) & " / " & DCount("*", "ProduitsClient")
    Il est surement possible d'appeller n tables mais comment faut il faire...?Je précise que le VBA et moi avons fait connaissance il y a de ça moins d'un mois

  4. #4
    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,

    je vois que tu n'as pas du tout adapté mon code de la sub RefreshQuery, il n'est donc pas adapté à ton appli.

    Sinon pour le DCount(), il suffit de faire un .RecordCount sur un recordset basé sur le SQL du code.
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  5. #5
    Membre du Club

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 117
    Points : 65
    Points
    65
    Par défaut
    Ohaou que réver de mieux que de pouvoir poser des questions à l'auteur du code?

    Non en effet je n'ai pas adapté ton code à mon appli. Non par féniantise et encore moi par copie pure et simple (même si ce point de vue est contestable), mais surtout par ignorance. Je n'ai aucune idée de la marche à suivre. C'est à peine si j'ai réussi à "copier" le code

    Pour ce qui est de faire un recordset basé sur le SQL du code je suis entièrement daccord avec toi. Simplement parce que je ne comprend pas... Je suis en train de lire quelque sites pour apprendre le VBA, mais je suis à la traine.

    Pourrais-tu alors détailler ce que tu me dis ou simplement me l'expliquer?
    Merci d'avance

  6. #6
    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
    donc ... si tu es novice ...

    il faut y aller doucement, commencer par faire la requête par le QBE (c'est à dire l'interface), regarder les résultats, jouer avec ...
    une fois que tu as ce que tu veux, tu peux regarder le SQL, et remplacer tes critères en "dur" (du genre = "TOTO") par des variables ... ce sera le moment pour toi, de revoir le tutoriel.

    Bonne continuation
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  7. #7
    Membre du Club

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 117
    Points : 65
    Points
    65
    Par défaut
    salut!
    J'ai compris comment faire des requetes ect... Il m'en a fallu pas mal pour mon appli.
    Mais ce que je n'arrive pas à voir c'est... que changer ds ton code pour qu'il soit compatible avec mon appli. J'ai a peu près la même chose que toi, j'ai relu le tuto plusieurs fois mais je ne comprend pas pourquoi ça ne marche pas...

  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
    ok ...
    ça c'est TON SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Me!lstResults.RowSource = "SELECT ProduitsClient.id_ProduitsClient, TypesProduitsClient.TypeProduits, ProduitsClient.Immatriculation, ProduitsClient.Marque, ProduitsClient.Taille, ProduitsClient.Couleur, Clients.Nom, Clients.Prénom FROM Clients" & _
                              "INNER JOIN (TypesProduitsClient" & _
                              "INNER JOIN ProduitsClient" & _
                              "ON TypesProduitsClient.id_TypesProduitsClient = ProduitsClient.id_TypesProduitsClient)" & _
                              "ON Clients.CodeClient = ProduitsClient.CodeClient;"
    et regarde le mien ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "SELECT CodMedia, Titre, Auteur, Famille, Type FROM Medias Where Medias!CodMedia <> 0 "
    il faut que utilise tes propres noms de champs et de tables ...
    idem dans les enchainements IF ... THEN ... pour écrire les critères ...
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



Discussions similaires

  1. Formulaire de recherche prêt à l'emploi (nouvelle version)
    Par Darlay Jean_Louis dans le forum IHM
    Réponses: 2
    Dernier message: 24/11/2005, 11h29
  2. [MySQL] Formulaire de recherche PHP + un script d recherche en HTML
    Par Dsphinx dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/11/2005, 19h44
  3. alléger un formulaire de recherche
    Par jarod71 dans le forum Langage
    Réponses: 4
    Dernier message: 28/10/2005, 11h11
  4. Réponses: 3
    Dernier message: 20/10/2005, 12h42
  5. Réponses: 5
    Dernier message: 18/10/2005, 14h09

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