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

Requêtes et SQL. Discussion :

Moteur de recherche à partir d'une liste de critères


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 20
    Points : 16
    Points
    16
    Par défaut Moteur de recherche à partir d'une liste de critères
    Bonjour,

    j'ai créé une base ACCESS.
    Avec un code en VB, je peux afficher certaines informations sur une entreprise en particulier, via un formulaire, en entrant dans une zone de texte le SIREN de l'entreprise en question.

    Ca fonctionne, je suis très contente.
    Mais ma base est en production maintenant, et on m'a fait une demande à laquelle je ne peux pas répondre seule.

    L'idéal, pour les utilisateurs, serait d'entrer une liste de SIREN dans la zone de texte, et d'obtenir en affichage les données correspondant à l'ENSEMBLE des SIREN inscrits.

    Il n'est pas envisageable de créer autant de zones de texte que de SIREN à rechercher (le but étant de faire gagner du temps aux utilisateurs, un copié-collé de la liste entière serait idéale).

    Mais ni les " ; " ni les "OU", ni rien ne fonctionne tout seul.
    Il doit donc falloir rajouter quelque chose au code pour que le formulaire comprenne que je cherche des données différentes...

    Quelqu'un saurait-il faire ça ?

    Merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Je pense que tu as une requête qui récupère tes informations par la zone de texte, si c'est le cas, tu dois avoir un =.

    remplace le par LIKE et mets des * autour de la chaine.

    Starec

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Voici ma requête :

    strSql = "SELECT Comptes_avec_CG.Numéro, Comptes_avec_CG.NumACTEUR, Comptes_avec_CG.SIREN, Comptes_avec_CG.RAISONSOCIALE, Comptes_avec_CG.CG FROM Comptes_avec_CG WHERE Comptes_avec_CG.SIREN LIKE '*" & Me.ActeurRech1 & "*' ORDER BY Comptes_avec_CG.NumACTEUR;"

    Il y a déjà un LIKE et des " * ".
    Mais si je mets 2 SIREN dans ma zone de texte, il cherche dans ma BDD un seul champs avec les 2 SIREN, ce qui n'existe pas.
    Comment faire pour qu'il comprennent que je cherche 2 ou n SIREN ?

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2008
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 221
    Points : 244
    Points
    244
    Par défaut
    Bonjour,

    Je pense que le mieux est de découper ce qui se trouve dans ta textbox (ce que l'utilissateur aura entré) en fonction des espaces par exemple et faire une boucle en rajoutant à ta requête SQL un opérateur OR, tant que la chaine de caractère qui se trouve dans ta textbox n'est pas terminée

    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
    Dim chaine as string
    Dim longueur as integer
    Dim tempo as string
     
    chaine = tonchamp.value & " "
    longueur = InStr(1, chaine, " ")
    tempo = Left(chaine, longueur)
    chaine = Right(chaine, (len(chaine)-longueur))
    strSql = "SELECT Comptes_avec_CG.Numéro, Comptes_avec_CG.NumACTEUR, Comptes_avec_CG.SIREN, Comptes_avec_CG.RAISONSOCIALE, Comptes_avec_CG.CG FROM Comptes_avec_CG WHERE Comptes_avec_CG.SIREN LIKE '*" & tempo & "*'"
     
    While chaine <> empty
    longueur = InStr(1, chaine, " ")
    tempo = Left(chaine, longueur)
    chaine = Right(chaine, (len(chaine)-longueur))
    strSql = strSql & " OR Comptes_avec_CG.SIREN LIKE '*" & tempo & "*'"
    Wend
    strSql = strSql & " ORDER BY Comptes_avec_CG.NumACTEUR;"
    y'aura surement quelques petits changements a faire mais j'vois bien un truc dans le genre

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour

    j'avais pas vu.

    Le principe que te donnes _MattU_ est de créer dynamiquement ta clause WHERE pour lancer la recherche.

    Starec

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Etant donné mes connaissances en code, j'avoue que là j'essaie de le comprendre pour le faire marcher.
    (parce que ça ne marche pas tel quel).

    En tout cas merci. Je vais me pencher là-dessus et je reviens dès que je saurai de quoi il retourne !

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Est-ce que je dois remplacer "chaine" et "longueur" par des données se trouvant dans ma base ?

  8. #8
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2008
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 221
    Points : 244
    Points
    244
    Par défaut
    Non je ne pense pas qu'il soit nécessaire de changer les variables que j'ai mis dans le code puisque ce sont des variables qui servent uniquement à construire ta requête.

    Je peux te demander de mettre une msgbox montrant ta strSql tout à la fin et de poster un apercu écran de cette msgbox ?! cela me permettra surement de comprendre ou sont les problèmes dans la construction

    Tu rajoutes juste à la fin du code que je t'ai donné :
    et tu essayes de lancer la recherche avec 4 ou 5 numéros SIREN s'il te plait

  9. #9
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    J'ai mis le doc en pièce jointe.

    Pourtant ça a l'air de marcher, ça montre exactement le requête que je voudrais !
    Fichiers attachés Fichiers attachés

  10. #10
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2008
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 221
    Points : 244
    Points
    244
    Par défaut
    Les numéro siren sont déclaré en tant que numérique dans ta table ou en tant que texte?!

    De plus les like sont ils vraiment utiles?!

  11. #11
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    en tant que texte

    Pour les LIKE je ne sais pas, c'est comme ça qu'on m'a appris à le faire, alors c'est comme ça que je le fais...

    En fait LIKE permet de ne mettre qu'une partie de recherche c'est ça ?
    Dans ce cas, non, ce n'est pas nécessaire, les utilisateurs n'entreront que des numéros SIREN complets.

  12. #12
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2008
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 221
    Points : 244
    Points
    244
    Par défaut
    Voila
    Ca ne changera peu etre rien mais essayes de remplacer les deux like qui se trouvent dans mon code par des = (ne pas oublier d'enlever les * ^^)

    Et comment envoi tu la requete?! tu peux me montrer la suite de ton code s'il te plait?!

  13. #13
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    CA MARCHE ! MAGNIFIQUE !
    TU ES FABULEUX !

    Par contre je ne comprend pas en quoi les LIKE ont pu empecher le bon fonctionnement...

    Pour info, la fin de mon code c'est :
    End Select



    Me.Liste130.RowSource = strSql ' affecte sql a lst_Resultat
    Me.Liste130.Requery ' recalcule la liste

    End Sub

  14. #14
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2008
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 221
    Points : 244
    Points
    244
    Par défaut
    Les like recherchent quelque chose après la valeur qu'on leur donne, ils ne sont surement pas fait pour des valeurs exactes!

    En tout cas, content que ca marche !
    Bonne continuation

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

Discussions similaires

  1. [shell] variable de recherche à partir d'une liste
    Par aerane dans le forum Shell et commandes GNU
    Réponses: 47
    Dernier message: 27/11/2012, 10h17
  2. Réponses: 2
    Dernier message: 12/07/2010, 15h10
  3. [MySQL] effectuer recherche à partir d'une liste deroulante
    Par manguigs dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/05/2009, 16h48
  4. Réponses: 35
    Dernier message: 24/04/2007, 17h11
  5. Réponses: 2
    Dernier message: 20/07/2006, 11h10

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