begin process at 2012 02 12 16:17:11
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de Donnees

 > PETIT MOTEUR DE RECHERCHE SQL / VB SUR BASE DE DONNEES

PETIT MOTEUR DE RECHERCHE SQL / VB SUR BASE DE DONNEES


 Information sur la source

Note :
9,67 / 10 - par 3 personnes
9,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de Donnees Classé sous :moteur, recherche, selection Niveau :Débutant Date de création :24/11/2003 Date de mise à jour :11/07/2008 11:21:33 Vu / téléchargé :12 793 / 1 750

Auteur : m2rtech

Ecrire un message privé
Site perso
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Les moteurs de recherche tout monde connait. Dans google ou autre je tape les mots que je recherche separés par des espaces et je tape sur Entrée.
Plus concrètement on a tous une base avec des champs de type Text ou Memo qui contiennent plusieurs dizaines de caractères (voir des centaines), et dans les exemples içi ou là, on nous montre toujours comment rechercher UN SEUL mot.

Vous avez une base access et vous etes debutant en sql et vous voulez la même chose que Google?
(heuuu modestement et toute proportion gardée....)

Voila un tout petit bout de code tres simple qui va vous faire voir la combinaison VB SQL afin de réaliser votre premier moteur de recherche.
le code source fonction en DAO.
ATTENTION si vous utiliser ADO remplacer les * par des %.

preparation:
lier une table à un controle Data ou Adodc ou meme autre apres une adaptation du code de connexion.
lier le controle à votre grille préférée.
dessinez un textbox et nommer le TxtRecherche_Avancee.
assurer vous que dans votre table le champs où se fait la recherche ne prenome :
"designation" modifier le code en cas contraire.
Lancer le Prog.
dans la zone de text, tapez autant de mot que vous le souhaitez separé par un espace (comme google) puis validez.

le moteur va afficher tous les champs contenant la série de mots rechercher.

Voilà, j'espere avoir été claire et bon prog.

Source

  • Private Sub TxtRecherche_Avancee(KeyAscii As Integer)
  • On Error Resume Next
  • 'Le principe de la rechercher avancee est le suivant:
  • 'supposont que l'on recherche les mots 'cheval region alsace'
  • 'Dans le principe on va creer une chaine SQL sous la forme
  • 'Select * from matable where designation like '*cheval*' AND '*region*' AND '*alsace*'
  • 'donc on va dabord decouper la suite de mot et la concatener à l'aide de 'AND' afin
  • 'de construire une chaine SQL correct
  • 'ATTENTION si vous utiliser ADO remplacer les * par des %
  • '
  • If (KeyAscii = 13) Then
  • chaine1 = ""
  • chaine_complete = Trim(TxtRecherche_Avancee)
  • lg = Len(chaine_complete)
  • X = 1
  • Do Until X = 0
  • X = InStr(1, chaine_complete, " ")
  • If X = 0 Then
  • chaine1 = chaine1 & "'*" & chaine_complete & "*'"
  • Else
  • chaine1 = Left(chaine_complete, X - 1)
  • chaine1 = "'*" & chaine1 & "*' AND designation like "
  • chaine_complete = Mid(chaine_complete, X + 1, lg - X)
  • End If
  • Loop
  • Data1.DatabaseName = App.Path & "\MaBase.mdb"
  • Data1.RecordSource = "SELECT * FROM matable " & _
  • "where designation like " & chaine1 & ""
  • Data1.Refresh
  • End If
Private Sub TxtRecherche_Avancee(KeyAscii As Integer)
    On Error Resume Next

    'Le principe de la rechercher avancee est le suivant:
    'supposont que l'on recherche les mots 'cheval region alsace'
    'Dans le principe on va creer une chaine SQL sous la forme
    'Select * from matable where designation like '*cheval*' AND '*region*' AND '*alsace*'
    'donc on va dabord decouper la suite de mot et la concatener à l'aide de 'AND' afin
    'de construire une chaine SQL correct
    'ATTENTION si vous utiliser ADO remplacer les * par des %
'
If (KeyAscii = 13) Then
    chaine1 = ""
    chaine_complete = Trim(TxtRecherche_Avancee)
    lg = Len(chaine_complete)
    X = 1
    Do Until X = 0
        X = InStr(1, chaine_complete, " ")
        If X = 0 Then
            chaine1 = chaine1 & "'*" & chaine_complete & "*'"
        Else
            chaine1 = Left(chaine_complete, X - 1)
            chaine1 = "'*" & chaine1 & "*' AND designation like "
            chaine_complete = Mid(chaine_complete, X + 1, lg - X)
        End If
    Loop
    Data1.DatabaseName = App.Path & "\MaBase.mdb"
    Data1.RecordSource = "SELECT * FROM matable " & _
    "where designation like " & chaine1 & ""
    Data1.Refresh
End If


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

11 juillet 2008 11:21:34 :
correction de code

 Sources du même auteur

Source avec Zip RÉPLICATION ET SYNCHRONISATION JET
MÉMORISER LES LARGEURS DE COLONNES DBGRID, DATAGRID

 Sources de la même categorie

Source avec Zip Source avec une capture BIEN ADMINISTRER LES ETUDIANTS ET LEURS CÔTES par okosa
Source avec Zip VBA EXEL GESTION DE PERSONEL NOUVEAU CONTRAT DE TRAVAI par oudlarbi
Source avec Zip Source avec une capture CREATION D'UN OBJET D'ACCÈS AUX DONNÉES par okosa
Source avec Zip Source .NET (Dotnet) MISAHORAIRE par MdelM
Source avec Zip Source avec une capture BASEDEDONNEES,GESTIONDEMALADES,DATABASSE par shadkitenge

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture INTERFACE WEB DYNAMIQUE PERMETTANT LA SELECTION DE DONNÉES D... par vsgn
Source avec Zip Source avec une capture Source .NET (Dotnet) VBTEXTFINDER : UN MOTEUR DE RECHERCHE DE MOT DANS SON CONTEX... par Patrice99
Source avec Zip Source avec une capture Source .NET (Dotnet) MOTEUR DE RECHERCHE INTERNET par vbnino
Source avec Zip Source avec une capture CLMOOGLE : MOTEUR DE RECHERCHE INTUITIF par clementio
Source avec Zip Source avec une capture Source .NET (Dotnet) SELECTION DANS UNE BASE ACCESS PAR CHOIX (VB 2005) par sadok_sa

Commentaires et avis

Commentaire de wcwmans le 28/11/2003 12:01:49

Bonjour, je narrive pas a me servir de ta source j'aimetrais que  tu nous donne un exemple dans un zip c'est toujours plus facile d'analiser une source avec des commentaires (ainsi qu'une BD quand il y en a une )que d'ajouter un bout de code dans un prog.
merci à +++

Commentaire de m2rtech le 29/11/2003 02:22:03

à la demande de wcwmans,

le moteur sous vb avec base access.


Le top serait une base de 15 à 20000 lignes avec designation à ralonge.

Commentaire de DARKSIDIOUS le 08/05/2004 20:40:48 administrateur CS

Extrêmement rapide : moins de 100 ms sur un Athlon XP 2400+ avec une recherche portant sur une base de données de plus de 40000 entrées !

Très pratique ton code !

9/10

DarK Sidious

Commentaire de themioux le 15/11/2005 12:02:51

Code génial, parfait pour faire des recherche sur plusieurs champs (après quelques modifications tout de même ;) )

Commentaire de themioux le 15/11/2005 12:52:07

Rectification... ce code ne marche qu'avec 2 mots clefs
Petite rectification donc...
        Dim chaineTmp As String
...

        If X = 0 Then
            chaine1 = chaine1 & "'*" & chaine_complete & "*'"
        Else
            chaineTmp = Left(chaine_complete, X - 1)
            chaine1 = chaine1 & "'*" & chaineTmp & "*' AND designation like "
            chaine_complete = Mid(chaine_complete, X + 1, lg - X)
        End If
...

voilà ^^

Commentaire de m2rtech le 29/12/2005 00:27:11

Salut,
je republie le code le cas ou, mais je confirme qu'il marchait avec plus de 2 mots clefs (donc 3, 4 etc) ET ce meme avec des fragments(google n'a qu'a bien se tenir lol) de mots et dans le désordre.
ex: vous rechercher des vis Chc zingué M12 par boite de cent :
vous tapez : vis zin boi cent

revoici le code tel qu'il tourne aujourd'hui :
Private Sub TxtRecherche_Avancee_KeyPress(KeyAscii As Integer)
    On Error GoTo fin

    'Le principe de la rechercher avancee est le suivant:
    'supposont que l'on recherche les mots 'moteur 450Kw Triphase'
    'Dans le principe on va creer une chaine SQL sous la forme
    'Select * from table where designation like '*moteur*' AND '*450Kw*' AND '*Triphase*'
    'donc on va dabord decouper le suite de mot et la concatener à l'aide de 'AND' afin
    'de construire une chaine SQL correct
    If (KeyAscii = 13) Then
        Dim chaine1 As String, chaine_complete As String
        Dim lg As Integer, X As Integer
        chaine1 = ""
        chaine_complete = Trim(TxtRecherche_Avancee)
        lg = Len(chaine_complete)
        X = 1
        Do Until X = 0
            X = InStr(1, chaine_complete, " ")
            If X = 0 Then
                chaine1 = chaine1 & "'*" & chaine_complete & "*'"
            Else
                chaine1 = Left(chaine_complete, X - 1)
                chaine1 = "'*" & chaine1 & "*' AND                        articles.désignation like "
        chaine_complete = Mid(chaine_complete, X + 1, lg - X)
        End If
        Loop
        Data1.RecordSource = Requete_Articles_De_base & " where    articles.désignation like " & chaine1 & Chaine_de_Group_BY & " ORDER BY " & Type_Tri_Sql_Articles
        Data1.Refresh
        End If
    Exit Sub
fin:
err.description
End Sub

Commentaire de Aurel_xp le 17/03/2006 08:58:22

Voila je cherche l' équivalent en trasact SQl , une fonction qui chercherait dans plusieur table sur une même base.
:)

Merci

Commentaire de m2rtech le 26/03/2006 00:07:47

connais pas bien trasact sql (mais voici ue piste)

il te suffira de créer une requete jointé (lol), et d'adresser
les champs des différentes tables de la sorte :

Champ_recherche = "Articles.référence & Articles.désignation & Fournisseurs.fournisseur"

Requete_Articles = Requete_Articles_De_base & _
" where " & Champ_recherche & "  LIKE ""*" & txtRech & "*""

chez moi ça marche. j'arrive à rechercher simultanement dans plusieurs champs de plusieurs tables.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Création d'un moteur de recherche [ par Fred ] Je crée un cd interactif.Je voudrais y ajouter un moteur de recherche mais je ne c pas trop comment m'y prendreest ce que qq un peut m'envoyer ou me m moteur de recherche et pattern matching [ par guirec ] je dois créer un moteur de recherche permettant de retrouver dans un texte des mots, ensemble de mots ou mots approchant par l'orhtographe.si quelqu'u moteur de recherche et algo de Boyer-Moore et Knuth-Morris-Pratt [ par guirec ] je cherche des sources sur ce sujet la.merci si vous pouviez m'aider moteur de recherche [ par Neo1234567890 ] Bonjour voilà actuellement je programme une encyclopédie sur l'Egypte et je bloc sur le moyen de faire un moteur de rechercheExemple : on tape Ramses, desespere moteur de recherche type internet pour recherche dans access [ par keke ] je doit rendre pour le 27/06 un programme recherchant(comme un moteur de recherche internet +grosse possibilite en premier) dans une base de donnees a SQL - instruction LIKE [ par Cameleon ] j'ai une base de donnée qui comprend un champ mémo. Je voudrais faire une recherche a partir d'un seul mot sur le contenu de chaque celule de ce champ Comment créer moteur de recherche? [ par alinefr57@caramail.com ] J'aimerais savoir comment creer un moteur de recherche sous vb 6 avec du texte qui est afficher en Richtextbox envoyer moi des exemples car je suis dé Moteur de recherche [ par jojo28 ] J'ai développé un module de recherche de fichiers et dossiers style windows. J'ai des difficultés à mettre en place l'option "contenant le texte" qui


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,435 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales