Soyez le premier à donner votre avis sur cette source.
Snippet vu 16 094 fois - Téléchargée 28 fois
<% Function Recherche(ByVal Req, ByVal nextDefault) If (UCase(nextDefault) <> "AND" And UCase(nextDefault) <> "XOR") Then nextDefault = "OR" 'Declaration des diférentes variables Dim compReq Dim Recherche0 Dim Recherche1 Dim nextField Dim start 'Supprime les espaces en début et fin de recherche, ainsi que les espaces multiples de la recherche Req = Trim(Req) Do While Len(compReq) <> Len(Req) compReq = Req Req = Replace(Req, " ", " ") Loop Recherche0 = "SELECT * FROM MaTable" Recherche1 = " WHERE (" 'Si la recherche n'est pas vide If ((Req <> "") And (Req <> " ")) Then Dim tblReq 'on découpe les termes de la recherche tblReq = Split(req, " ") nbTermes = UBound(tblReq) nextField = nextDefault start = 1 'traitement du premier mot (qui ne doit être ni AND ni OR ni XOR) If (UCase(tblReq(0) <> "AND") And (UCase(tblReq(0)) <> "OR") And (UCase(tblReq(0)) <> "XOR")) Then 'Si le premier mot est "NOT" alors le 2ème ne doit pas apparaitre If (UCase(tblReq(0)) = "NOT" And (nbTermes > 0)) Then Recherche1 = Recherche1 & "champ Not Like '%" & tblReq(1) & "%' " start = 2 'Sinon le permier mot doit apparaitre (sauf si la recherche est "NOT", dans ce cas il n'y a pas de critère de recherche) ElseIf UCase(tblReq(0)) <> "NOT" Then Recherche1 = Recherche1 & "champ Like '%" & tblReq(0) & "%' " End If Else If nbTermes > 0 Then Recherche1 = Recherche1 & "champ Like '%" & tblReq(1) & "%' " start = 2 End If End If 'On regarde tous les termes trouvés dans la recherche For ii = start To nbTermes 'On regarde s'il y a un mot booléen Select Case UCase(tblReq(ii)) Case "AND" nextField = "AND" Case "OR" nextField = "OR" cASE "XOR" nextField = "XOR" 'Le cas "Not" est particulier, car le mot clef ne s'utilise pas de la même facon que "AND" et "OR" '"NOT" ne dois pas être le dernier mot Case "NOT" If ii < nbTermes Then ii = ii + 1 Recherche1 = Recherche1 & nextField & " champ Not Like '%" & tblReq(ii) & "%' " End If 'Sinon, on ajoute le mot à la chaine de recherche Case Else Recherche1 = Recherche1 & nextField & " champ '%" & tblReq(ii) & "%' " nextField = nextDefault End Select Next End If If Len(Recherche1) > 8 Then Recherche = Recherche0 & Recherche1 & ")" Else Recherche = Recherche0 End If End Function %>
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.