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

VBA Access Discussion :

Requête sur le résultat d'une recherche


Sujet :

VBA Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Requête sur le résultat d'une recherche
    Bonjour à tous.

    je suis nouveau ici, et débutant, mais cela fait un petit moment que je lis avec attention les tuto que j'ai trouvé très bien fait.

    Seulement voilà, je suis à présent bloqué.

    Mon problème est assez simple à comprendre :

    - J'ai une table comprenant : auteur, titre et deux champ rep et fic reprenant l'arborescence d'un fichier externe à la base de donnée pointant sur un fichier doc.

    -J'ai mis en place un fomulaire de recherche tel que l'utilisateur tape le nom de l'auteur, clique sur recherche et la requête lui retourne (dans une zone de liste lst_resultat) toutes les lignes de la table ayant pour champ auteur celui tapé par l'utilisateur.
    Tout cela fonctionne correctement grâce aux explications trouvé ici.


    Voici mon problème :
    - Je souhaite que l'utilisateur, en double cliquant sur la ligne qu'il souhaite (donc pour l'auteur recherche, et pour le titre du livre qui est retourné par la recherche), entraîne l'ouverture du fichier .doc ou .docx associé.

    Pour cela j'ai mis en place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute 0&, vbNullString, rep & fic, vbNullString, vbNullString, vbNormalFocus
    Cela marche. Cependant uniquement pour la première ligne.

    Si je double clic sur la deuxième ligne dans la zone de résultat, la requête va m'ouvrir le fichier de la première ligne...
    Voilà donc mon problème.

    En espérant que l'on puisse partager nos pistes de solution.

    N'hésitez pas à me demander des précisions si je peux vous éclairer sur mon problème.


    Merci à vous.

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 854
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 854
    Points : 14 965
    Points
    14 965
    Par défaut
    Bonsoir,
    peux-tu montrer le code qui alimente les 2 champs rep et fic, fait à partir de ton contrôle lst_resultat, je suppose... et indiquer le nombre de colonnes te cette zone de liste ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    le voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub lst_resultat_DblClick(Cancel As Integer)
    ShellExecute 0&, vbNullString, rep & fic, vbNullString, vbNullString, vbNormalFocus
    End Sub
    Sachant que j'ai mis dans un module qui s'appelle "ouvrir" la definition de l'api shellexecute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String _
    , ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Vous trouverez ci-joint une impression d'écran de la situation.

    Et voici le code de la fonction qui recherche dans la table (basé sur celle fournie dans un tutoriel très bien fait présent ici)

    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
    Private Sub Commande5_Click()
        Dim strTable As String, strField As String, strCriteria As String, strSql As String
        Dim Criter As Variant
           If IsNull(Me.txt_critere) Then
          MsgBox "Vous devez renseigner le nom d'un auteur.", vbExclamation + vbOKOnly, "Recherche"
          Exit Sub
       End If
     
        strTable = "INTER"         ' recupère le nom de la table
        strField = "AUTEUR"         ' recupère le nom du champ
     
        ' compose le critere de recherche
        strCriteria = strTable & "." & strField & " Like """ & Me.txt_critere & """"
     
        ' construit la requête sql
        strSql = "SELECT DISTINCTROW " & strTable & ".*"
        strSql = strSql & " FROM " & strTable
        strSql = strSql & " WHERE ((" & strCriteria & "));"
     
     
        Me.lst_resultat.RowSource = strSql  ' affecte sql a lst_Resultat
        Me.lst_resultat.Requery             ' recalcule la liste
    End Sub


    La zone de résultat contient 7 colonnes.
    Merci
    Images attachées Images attachées  

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 854
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 854
    Points : 14 965
    Points
    14 965
    Par défaut
    Bonsoir kristof95,
    Citation Envoyé par kristof95 Voir le message
    Si je double clic sur la deuxième ligne dans la zone de résultat, la requête va m'ouvrir le fichier de la première ligne...
    Voilà donc mon problème.
    En fait c'est le code sur le double clic dont j'ai besoin, car c'est ici que tu devrais, en théorie, changer les valeurs des champs rep et fic.

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 854
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 854
    Points : 14 965
    Points
    14 965
    Par défaut
    re,
    sans certitude absolue, le code ci-dessous devrait te récupérer les bonnes données:
    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
    Private Sub lst_resultat_DblClick(Cancel As Integer)
    Dim ctllst As Control
    Dim varItm As Variant
    Set ctllst = Me.lst_resultat
     
    ' Lecture de la ligne sélectionnée dans la liste résultat
     
    If ctllst.ItemsSelected.Count > 0 Then
            For Each varItm In ctllst.ItemsSelected
     
    ' Récupération des valeurs de la colonne 5 et 6 (répertoire et fichier)
                Me.rep = ctllst.Column(5, varItm)
                Me.fic = ctllst.Column(6, varItm)
            Next varItm
    End If
     
    Debug.Print Me.rep & " / " & Me.fic 'affiche des valeurs, enlever après les tests 
    'ici ton code pour ouvrir le document....
     
    End Sub

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    C'est tout simplement parfait !

    Je vais lire avec attention le code pour bien le comprendre mais ça fonctionne d'ores et déjà à merveille.


    Merci beaucoup

Discussions similaires

  1. faire une requête sur le résultat d'une requête
    Par clanou01 dans le forum Requêtes
    Réponses: 6
    Dernier message: 28/08/2012, 12h44
  2. [ODBC] Exécuter une requête sur le résultat d'une autre
    Par che0po dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/05/2012, 12h29
  3. Réponses: 1
    Dernier message: 27/12/2011, 15h13
  4. Effectuer recherche Multi-critères sur le résultat d'une requête
    Par 30avril1989 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 25/06/2010, 16h04
  5. Requête sur les résultats d'une requête
    Par kiro57 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/10/2007, 18h48

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