Dim
queryStr, keywords
keywords = Trim(Request.Form("keywords"))
operateur_logique = (Request.Form("logique"))
|
Récupération
des infos du formulaire.
Keywords
contient les mots clés
logique recupère si les mots clés sont associés
avec AND ou OR
|
if
keywords <> "" then
myarraykeywords = Split(keywords)
NbTabIndice_keywords=UBound(myarraykeywords)
end if
|
Les mots clés sont
séparé et mis dans un tableau
NbTabIndice_keywords
indique la dimension du tableau, c'est à dire le nombre
de mots clés écrit. |
queryStr
= "SELECT id, title, start_date, close_date FROM ANO_problems
" & _
"WHERE
status=" & Cfg(adoCon, "CloseStatus") &
" AND ("
|
Le début de la requette indépendante
du nombre de mots clés. remarquez AND
( qui ouvre les conditions de recherche avec les mots
clés |
dim
p_keywords
p_keywords = 0
For
p_keywords=0 to NbTabIndice_keywords
if
operateur_logique = 1 then
whereStr = whereStr
& " (description LIKE '%"& myarraykeywords(p_keywords)&"%'
" & _
"
OR solution LIKE '%"
& myarraykeywords(p_keywords) & "%' " &
_
"
OR UPPER(title) LIKE UPPER('%"
& myarraykeywords(p_keywords) & "%'))
AND ("
else
whereStr = whereStr & " (description
LIKE '%"& myarraykeywords(p_keywords)&"%'
" & _
"
OR solution LIKE '%"
& myarraykeywords(p_keywords) & "%' " &
_
"
OR UPPER(title) LIKE UPPER('%"
& myarraykeywords(p_keywords) & "%'))
OR ("
End If
NEXT
|
On fait une boucle qui tourene autant de fois qu'il y a de
mots clés.
On fait la recherche dans les champs description, solution
et title
si j'ai choisi d'associer avec AND
c'est la première partie
Si j'ai choisi d'associé les mots clés avec OR
c'est la deuxième partie
Bien faire attention aux parenthèses
afin d'associer correctement les opérateurs logiques
|
if
operateur_logique = 1 then
if Mid
(whereStr , Len(whereStr)-4,5) = "AND
(" then
whereStr
= Mid (whereStr , 1 , Len(whereStr) -5)
end if
else
if Mid
(whereStr , Len(whereStr)-3,4) = "OR
(" then
whereStr
= Mid (whereStr , 1 , Len(whereStr) -4)
end if
end if
|
Il faut enlever le dernier AND
( ou le dernier OR (
de la boucle. |
if
NbTabIndice_keywords > 0 then
Dim q_keywords
q_keywords=0
for p_keywords=0 to NbTabIndice_keywords
if myarraykeywords(p_keywords)
<> "" and q_keywords= 0 then
whereStr
= whereStr & ")"
q_keywords=q_keywords+1
end if
next
end if
|
Permet de générer la
dernière parenthèse derrière le dernier mot-
clé. |
whereStr
= whereStr & ")
ORDER BY start_date ASC"
|
Penser a la dernière parenthèse
concernant tous les mots-clés |
queryStr
= queryStr & whereStr |
On associe le début de la requette
avec la requette construite |
Set
srchRes = SQLQuery(adoCon, queryStr) |
Execution de la requette |
Rq : Si vous faites un copier-coller de ce code ca ne marchera pas,
car les lignes ne seront pas forcément coupé au bon
endroit. C'est pour cette raison que j'ai marqué en orange
la dernière lettre de chaque ligne.