Bonjour,
Je souhaite creer une appli permettant de rechercher des recettes selon
différents critères, je souhaite que mon formulaire de recherche soit le plus
modulables possibles, pour cela, l'utilisateur peut choisir les champs dans
lesquels il veut effectuer sa recherche en cochant dans la case
correspondante.
Cette fonctionnalité marche très bien, cependant, je souhaite aller plus
loin, je veux que l'utilisateur puisse rechercher des recettes contenant du
poulet ET du citron par exemple. Pour cela, il tape dans la même zone de
texte "poulet ET citron", cependant, la requête qui est fabriquée par mon
code ne va chercher que les libellés d'ingrédients contenant poulet ET citron
alors que je veux les ingrédients contenant poulet ET les ingredients
contenant Citron....
J'espère que je vous ai suffisament clairement expliqué mon problème.
Je vous joins une partie de mon code au cas où quelqu un pourrait me
débloquer.
en vous remerciant d'avance...
'La requête sera contenue dans la variable "SQL"'
Dim SQL As String
'Requête SQL de base qui selectionne tous les enregistrements de la table
recette'
SQL = "SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette', T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet =
T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme) LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' "
'Si le bouton chk_recette est enfoncé, on cherche tous les enregistrements
qui ont
'un libellé semblable à celui tapé dans la zone de texte libellé'
If Me.Chk_recette = True Then
SQL = SQL & "AND T_recette.libelle_recette like '*" & Me.ZT_libelle & "*'"
End If
'Début du code qui me pose problème...!!!!!!!!!:
'Si le bouton Chk_ingredient est enfoncé, on cherche les recettes pour
lesquelles
'les ingrédients ont un libellé semblable à celui tapé dans la zone de texte
SQL = SQL & "AND ("
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*" & Mid(chaine, 1, i) &
"*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & "T_ingredient.libelle_ingredient like '*" & chaine & "*'"
End If
Next i
'SQL = SQL & ")"
End If
Bonjour,
Je souhaite creer une appli permettant de rechercher des recettes selon
différents critères, je souhaite que mon formulaire de recherche soit le plus
modulables possibles, pour cela, l'utilisateur peut choisir les champs dans
lesquels il veut effectuer sa recherche en cochant dans la case
correspondante.
Cette fonctionnalité marche très bien, cependant, je souhaite aller plus
loin, je veux que l'utilisateur puisse rechercher des recettes contenant du
poulet ET du citron par exemple. Pour cela, il tape dans la même zone de
texte "poulet ET citron", cependant, la requête qui est fabriquée par mon
code ne va chercher que les libellés d'ingrédients contenant poulet ET citron
alors que je veux les ingrédients contenant poulet ET les ingredients
contenant Citron....
J'espère que je vous ai suffisament clairement expliqué mon problème.
Je vous joins une partie de mon code au cas où quelqu un pourrait me
débloquer.
en vous remerciant d'avance...
'La requête sera contenue dans la variable "SQL"'
Dim SQL As String
'Requête SQL de base qui selectionne tous les enregistrements de la table
recette'
SQL = "SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette', T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet =
T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme) LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' "
'Si le bouton chk_recette est enfoncé, on cherche tous les enregistrements
qui ont
'un libellé semblable à celui tapé dans la zone de texte libellé'
If Me.Chk_recette = True Then
SQL = SQL & "AND T_recette.libelle_recette like '*" & Me.ZT_libelle & "*'"
End If
'Début du code qui me pose problème...!!!!!!!!!:
'Si le bouton Chk_ingredient est enfoncé, on cherche les recettes pour
lesquelles
'les ingrédients ont un libellé semblable à celui tapé dans la zone de texte
SQL = SQL & "AND ("
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*" & Mid(chaine, 1, i) &
"*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & "T_ingredient.libelle_ingredient like '*" & chaine & "*'"
End If
Next i
'SQL = SQL & ")"
End If
Bonjour,
Je souhaite creer une appli permettant de rechercher des recettes selon
différents critères, je souhaite que mon formulaire de recherche soit le plus
modulables possibles, pour cela, l'utilisateur peut choisir les champs dans
lesquels il veut effectuer sa recherche en cochant dans la case
correspondante.
Cette fonctionnalité marche très bien, cependant, je souhaite aller plus
loin, je veux que l'utilisateur puisse rechercher des recettes contenant du
poulet ET du citron par exemple. Pour cela, il tape dans la même zone de
texte "poulet ET citron", cependant, la requête qui est fabriquée par mon
code ne va chercher que les libellés d'ingrédients contenant poulet ET citron
alors que je veux les ingrédients contenant poulet ET les ingredients
contenant Citron....
J'espère que je vous ai suffisament clairement expliqué mon problème.
Je vous joins une partie de mon code au cas où quelqu un pourrait me
débloquer.
en vous remerciant d'avance...
'La requête sera contenue dans la variable "SQL"'
Dim SQL As String
'Requête SQL de base qui selectionne tous les enregistrements de la table
recette'
SQL = "SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette', T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet =
T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme) LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' "
'Si le bouton chk_recette est enfoncé, on cherche tous les enregistrements
qui ont
'un libellé semblable à celui tapé dans la zone de texte libellé'
If Me.Chk_recette = True Then
SQL = SQL & "AND T_recette.libelle_recette like '*" & Me.ZT_libelle & "*'"
End If
'Début du code qui me pose problème...!!!!!!!!!:
'Si le bouton Chk_ingredient est enfoncé, on cherche les recettes pour
lesquelles
'les ingrédients ont un libellé semblable à celui tapé dans la zone de texte
SQL = SQL & "AND ("
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*" & Mid(chaine, 1, i) &
"*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & "T_ingredient.libelle_ingredient like '*" & chaine & "*'"
End If
Next i
'SQL = SQL & ")"
End If
Bonjour,
moi j'ai fais un truc du genre :
SELECT TBL_Fonction.FON_Libelle
FROM TBL_Fonction
WHERE TBL_Fonction.FON_Libelle Like "*Bibl*" AND TBL_Fonction.FON_Libelle
Like "*ponsable*";
cela me ramène : "Bibliothécaire responsable"
cela solutionne ton problème ??Bonjour,
Je souhaite creer une appli permettant de rechercher des recettes selon
différents critères, je souhaite que mon formulaire de recherche soit le plus
modulables possibles, pour cela, l'utilisateur peut choisir les champs dans
lesquels il veut effectuer sa recherche en cochant dans la case
correspondante.
Cette fonctionnalité marche très bien, cependant, je souhaite aller plus
loin, je veux que l'utilisateur puisse rechercher des recettes contenant du
poulet ET du citron par exemple. Pour cela, il tape dans la même zone de
texte "poulet ET citron", cependant, la requête qui est fabriquée par mon
code ne va chercher que les libellés d'ingrédients contenant poulet ET citron
alors que je veux les ingrédients contenant poulet ET les ingredients
contenant Citron....
J'espère que je vous ai suffisament clairement expliqué mon problème.
Je vous joins une partie de mon code au cas où quelqu un pourrait me
débloquer.
en vous remerciant d'avance...
'La requête sera contenue dans la variable "SQL"'
Dim SQL As String
'Requête SQL de base qui selectionne tous les enregistrements de la table
recette'
SQL = "SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette', T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet =
T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme) LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' "
'Si le bouton chk_recette est enfoncé, on cherche tous les enregistrements
qui ont
'un libellé semblable à celui tapé dans la zone de texte libellé'
If Me.Chk_recette = True Then
SQL = SQL & "AND T_recette.libelle_recette like '*" & Me.ZT_libelle & "*'"
End If
'Début du code qui me pose problème...!!!!!!!!!:
'Si le bouton Chk_ingredient est enfoncé, on cherche les recettes pour
lesquelles
'les ingrédients ont un libellé semblable à celui tapé dans la zone de texte
SQL = SQL & "AND ("
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*" & Mid(chaine, 1, i) &
"*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & "T_ingredient.libelle_ingredient like '*" & chaine & "*'"
End If
Next i
'SQL = SQL & ")"
End If
Bonjour,
moi j'ai fais un truc du genre :
SELECT TBL_Fonction.FON_Libelle
FROM TBL_Fonction
WHERE TBL_Fonction.FON_Libelle Like "*Bibl*" AND TBL_Fonction.FON_Libelle
Like "*ponsable*";
cela me ramène : "Bibliothécaire responsable"
cela solutionne ton problème ??
Bonjour,
Je souhaite creer une appli permettant de rechercher des recettes selon
différents critères, je souhaite que mon formulaire de recherche soit le plus
modulables possibles, pour cela, l'utilisateur peut choisir les champs dans
lesquels il veut effectuer sa recherche en cochant dans la case
correspondante.
Cette fonctionnalité marche très bien, cependant, je souhaite aller plus
loin, je veux que l'utilisateur puisse rechercher des recettes contenant du
poulet ET du citron par exemple. Pour cela, il tape dans la même zone de
texte "poulet ET citron", cependant, la requête qui est fabriquée par mon
code ne va chercher que les libellés d'ingrédients contenant poulet ET citron
alors que je veux les ingrédients contenant poulet ET les ingredients
contenant Citron....
J'espère que je vous ai suffisament clairement expliqué mon problème.
Je vous joins une partie de mon code au cas où quelqu un pourrait me
débloquer.
en vous remerciant d'avance...
'La requête sera contenue dans la variable "SQL"'
Dim SQL As String
'Requête SQL de base qui selectionne tous les enregistrements de la table
recette'
SQL = "SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette', T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet =
T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme) LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' "
'Si le bouton chk_recette est enfoncé, on cherche tous les enregistrements
qui ont
'un libellé semblable à celui tapé dans la zone de texte libellé'
If Me.Chk_recette = True Then
SQL = SQL & "AND T_recette.libelle_recette like '*" & Me.ZT_libelle & "*'"
End If
'Début du code qui me pose problème...!!!!!!!!!:
'Si le bouton Chk_ingredient est enfoncé, on cherche les recettes pour
lesquelles
'les ingrédients ont un libellé semblable à celui tapé dans la zone de texte
SQL = SQL & "AND ("
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*" & Mid(chaine, 1, i) &
"*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & "T_ingredient.libelle_ingredient like '*" & chaine & "*'"
End If
Next i
'SQL = SQL & ")"
End If
Bonjour,
moi j'ai fais un truc du genre :
SELECT TBL_Fonction.FON_Libelle
FROM TBL_Fonction
WHERE TBL_Fonction.FON_Libelle Like "*Bibl*" AND TBL_Fonction.FON_Libelle
Like "*ponsable*";
cela me ramène : "Bibliothécaire responsable"
cela solutionne ton problème ??Bonjour,
Je souhaite creer une appli permettant de rechercher des recettes selon
différents critères, je souhaite que mon formulaire de recherche soit le plus
modulables possibles, pour cela, l'utilisateur peut choisir les champs dans
lesquels il veut effectuer sa recherche en cochant dans la case
correspondante.
Cette fonctionnalité marche très bien, cependant, je souhaite aller plus
loin, je veux que l'utilisateur puisse rechercher des recettes contenant du
poulet ET du citron par exemple. Pour cela, il tape dans la même zone de
texte "poulet ET citron", cependant, la requête qui est fabriquée par mon
code ne va chercher que les libellés d'ingrédients contenant poulet ET citron
alors que je veux les ingrédients contenant poulet ET les ingredients
contenant Citron....
J'espère que je vous ai suffisament clairement expliqué mon problème.
Je vous joins une partie de mon code au cas où quelqu un pourrait me
débloquer.
en vous remerciant d'avance...
'La requête sera contenue dans la variable "SQL"'
Dim SQL As String
'Requête SQL de base qui selectionne tous les enregistrements de la table
recette'
SQL = "SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette', T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet =
T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme) LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' "
'Si le bouton chk_recette est enfoncé, on cherche tous les enregistrements
qui ont
'un libellé semblable à celui tapé dans la zone de texte libellé'
If Me.Chk_recette = True Then
SQL = SQL & "AND T_recette.libelle_recette like '*" & Me.ZT_libelle & "*'"
End If
'Début du code qui me pose problème...!!!!!!!!!:
'Si le bouton Chk_ingredient est enfoncé, on cherche les recettes pour
lesquelles
'les ingrédients ont un libellé semblable à celui tapé dans la zone de texte
SQL = SQL & "AND ("
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*" & Mid(chaine, 1, i) &
"*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & "T_ingredient.libelle_ingredient like '*" & chaine & "*'"
End If
Next i
'SQL = SQL & ")"
End If
Bonjour,
malheureusement, cela ne solutionne pas mon problème, j'ai ommis de
préciser
qu' une recette contenait plusieurs ingrédients donc je veux une recette
qui
contient un ingredient like"*poulet*" ET un ingredient like "*citron*"
ta solution ne fonctionne que pour chercher deux chaines de caractères
dans
un même libellé...
mais merci quand même ;)Bonjour,
moi j'ai fais un truc du genre :
SELECT TBL_Fonction.FON_Libelle
FROM TBL_Fonction
WHERE TBL_Fonction.FON_Libelle Like "*Bibl*" AND TBL_Fonction.FON_Libelle
Like "*ponsable*";
cela me ramène : "Bibliothécaire responsable"
cela solutionne ton problème ??Bonjour,
Je souhaite creer une appli permettant de rechercher des recettes selon
différents critères, je souhaite que mon formulaire de recherche soit
le plus
modulables possibles, pour cela, l'utilisateur peut choisir les champs
dans
lesquels il veut effectuer sa recherche en cochant dans la case
correspondante.
Cette fonctionnalité marche très bien, cependant, je souhaite aller
plus
loin, je veux que l'utilisateur puisse rechercher des recettes
contenant du
poulet ET du citron par exemple. Pour cela, il tape dans la même zone
de
texte "poulet ET citron", cependant, la requête qui est fabriquée par
mon
code ne va chercher que les libellés d'ingrédients contenant poulet ET
citron
alors que je veux les ingrédients contenant poulet ET les ingredients
contenant Citron....
J'espère que je vous ai suffisament clairement expliqué mon problème.
Je vous joins une partie de mon code au cas où quelqu un pourrait me
débloquer.
en vous remerciant d'avance...
'La requête sera contenue dans la variable "SQL"'
Dim SQL As String
'Requête SQL de base qui selectionne tous les enregistrements de la
table
recette'
SQL = "SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette',
T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet
RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet >> > T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme)
LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN
T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' "
'Si le bouton chk_recette est enfoncé, on cherche tous les
enregistrements
qui ont
'un libellé semblable à celui tapé dans la zone de texte libellé'
If Me.Chk_recette = True Then
SQL = SQL & "AND T_recette.libelle_recette like '*" & Me.ZT_libelle &
"*'"
End If
'Début du code qui me pose problème...!!!!!!!!!:
'Si le bouton Chk_ingredient est enfoncé, on cherche les recettes pour
lesquelles
'les ingrédients ont un libellé semblable à celui tapé dans la zone de
texte
SQL = SQL & "AND ("
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*" & Mid(chaine, 1,
i) &
"*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & "T_ingredient.libelle_ingredient like '*" & chaine & "*'"
End If
Next i
'SQL = SQL & ")"
End If
Bonjour,
malheureusement, cela ne solutionne pas mon problème, j'ai ommis de
préciser
qu' une recette contenait plusieurs ingrédients donc je veux une recette
qui
contient un ingredient like"*poulet*" ET un ingredient like "*citron*"
ta solution ne fonctionne que pour chercher deux chaines de caractères
dans
un même libellé...
mais merci quand même ;)
Bonjour,
moi j'ai fais un truc du genre :
SELECT TBL_Fonction.FON_Libelle
FROM TBL_Fonction
WHERE TBL_Fonction.FON_Libelle Like "*Bibl*" AND TBL_Fonction.FON_Libelle
Like "*ponsable*";
cela me ramène : "Bibliothécaire responsable"
cela solutionne ton problème ??
Bonjour,
Je souhaite creer une appli permettant de rechercher des recettes selon
différents critères, je souhaite que mon formulaire de recherche soit
le plus
modulables possibles, pour cela, l'utilisateur peut choisir les champs
dans
lesquels il veut effectuer sa recherche en cochant dans la case
correspondante.
Cette fonctionnalité marche très bien, cependant, je souhaite aller
plus
loin, je veux que l'utilisateur puisse rechercher des recettes
contenant du
poulet ET du citron par exemple. Pour cela, il tape dans la même zone
de
texte "poulet ET citron", cependant, la requête qui est fabriquée par
mon
code ne va chercher que les libellés d'ingrédients contenant poulet ET
citron
alors que je veux les ingrédients contenant poulet ET les ingredients
contenant Citron....
J'espère que je vous ai suffisament clairement expliqué mon problème.
Je vous joins une partie de mon code au cas où quelqu un pourrait me
débloquer.
en vous remerciant d'avance...
'La requête sera contenue dans la variable "SQL"'
Dim SQL As String
'Requête SQL de base qui selectionne tous les enregistrements de la
table
recette'
SQL = "SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette',
T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet
RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet >> > T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme)
LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN
T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' "
'Si le bouton chk_recette est enfoncé, on cherche tous les
enregistrements
qui ont
'un libellé semblable à celui tapé dans la zone de texte libellé'
If Me.Chk_recette = True Then
SQL = SQL & "AND T_recette.libelle_recette like '*" & Me.ZT_libelle &
"*'"
End If
'Début du code qui me pose problème...!!!!!!!!!:
'Si le bouton Chk_ingredient est enfoncé, on cherche les recettes pour
lesquelles
'les ingrédients ont un libellé semblable à celui tapé dans la zone de
texte
SQL = SQL & "AND ("
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*" & Mid(chaine, 1,
i) &
"*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & "T_ingredient.libelle_ingredient like '*" & chaine & "*'"
End If
Next i
'SQL = SQL & ")"
End If
Bonjour,
malheureusement, cela ne solutionne pas mon problème, j'ai ommis de
préciser
qu' une recette contenait plusieurs ingrédients donc je veux une recette
qui
contient un ingredient like"*poulet*" ET un ingredient like "*citron*"
ta solution ne fonctionne que pour chercher deux chaines de caractères
dans
un même libellé...
mais merci quand même ;)Bonjour,
moi j'ai fais un truc du genre :
SELECT TBL_Fonction.FON_Libelle
FROM TBL_Fonction
WHERE TBL_Fonction.FON_Libelle Like "*Bibl*" AND TBL_Fonction.FON_Libelle
Like "*ponsable*";
cela me ramène : "Bibliothécaire responsable"
cela solutionne ton problème ??Bonjour,
Je souhaite creer une appli permettant de rechercher des recettes selon
différents critères, je souhaite que mon formulaire de recherche soit
le plus
modulables possibles, pour cela, l'utilisateur peut choisir les champs
dans
lesquels il veut effectuer sa recherche en cochant dans la case
correspondante.
Cette fonctionnalité marche très bien, cependant, je souhaite aller
plus
loin, je veux que l'utilisateur puisse rechercher des recettes
contenant du
poulet ET du citron par exemple. Pour cela, il tape dans la même zone
de
texte "poulet ET citron", cependant, la requête qui est fabriquée par
mon
code ne va chercher que les libellés d'ingrédients contenant poulet ET
citron
alors que je veux les ingrédients contenant poulet ET les ingredients
contenant Citron....
J'espère que je vous ai suffisament clairement expliqué mon problème.
Je vous joins une partie de mon code au cas où quelqu un pourrait me
débloquer.
en vous remerciant d'avance...
'La requête sera contenue dans la variable "SQL"'
Dim SQL As String
'Requête SQL de base qui selectionne tous les enregistrements de la
table
recette'
SQL = "SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette',
T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet
RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet >> > T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme)
LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN
T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' "
'Si le bouton chk_recette est enfoncé, on cherche tous les
enregistrements
qui ont
'un libellé semblable à celui tapé dans la zone de texte libellé'
If Me.Chk_recette = True Then
SQL = SQL & "AND T_recette.libelle_recette like '*" & Me.ZT_libelle &
"*'"
End If
'Début du code qui me pose problème...!!!!!!!!!:
'Si le bouton Chk_ingredient est enfoncé, on cherche les recettes pour
lesquelles
'les ingrédients ont un libellé semblable à celui tapé dans la zone de
texte
SQL = SQL & "AND ("
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*" & Mid(chaine, 1,
i) &
"*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & "T_ingredient.libelle_ingredient like '*" & chaine & "*'"
End If
Next i
'SQL = SQL & ")"
End If
Bonjour,
malheureusement, cela ne solutionne pas mon problème, j'ai ommis de préciser
qu' une recette contenait plusieurs ingrédients donc je veux une recette qui
contient un ingredient like"*poulet*" ET un ingredient like "*citron*"
ta solution ne fonctionne que pour chercher deux chaines de caractères dans
un même libellé...
mais merci quand même ;)Bonjour,
moi j'ai fais un truc du genre :
SELECT TBL_Fonction.FON_Libelle
FROM TBL_Fonction
WHERE TBL_Fonction.FON_Libelle Like "*Bibl*" AND TBL_Fonction.FON_Libelle
Like "*ponsable*";
cela me ramène : "Bibliothécaire responsable"
cela solutionne ton problème ??Bonjour,
Je souhaite creer une appli permettant de rechercher des recettes selon
différents critères, je souhaite que mon formulaire de recherche soit le plus
modulables possibles, pour cela, l'utilisateur peut choisir les champs dans
lesquels il veut effectuer sa recherche en cochant dans la case
correspondante.
Cette fonctionnalité marche très bien, cependant, je souhaite aller plus
loin, je veux que l'utilisateur puisse rechercher des recettes contenant du
poulet ET du citron par exemple. Pour cela, il tape dans la même zone de
texte "poulet ET citron", cependant, la requête qui est fabriquée par mon
code ne va chercher que les libellés d'ingrédients contenant poulet ET citron
alors que je veux les ingrédients contenant poulet ET les ingredients
contenant Citron....
J'espère que je vous ai suffisament clairement expliqué mon problème.
Je vous joins une partie de mon code au cas où quelqu un pourrait me
débloquer.
en vous remerciant d'avance...
'La requête sera contenue dans la variable "SQL"'
Dim SQL As String
'Requête SQL de base qui selectionne tous les enregistrements de la table
recette'
SQL = "SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette', T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet =
T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme) LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' "
'Si le bouton chk_recette est enfoncé, on cherche tous les enregistrements
qui ont
'un libellé semblable à celui tapé dans la zone de texte libellé'
If Me.Chk_recette = True Then
SQL = SQL & "AND T_recette.libelle_recette like '*" & Me.ZT_libelle & "*'"
End If
'Début du code qui me pose problème...!!!!!!!!!:
'Si le bouton Chk_ingredient est enfoncé, on cherche les recettes pour
lesquelles
'les ingrédients ont un libellé semblable à celui tapé dans la zone de texte
SQL = SQL & "AND ("
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*" & Mid(chaine, 1, i) &
"*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & "T_ingredient.libelle_ingredient like '*" & chaine & "*'"
End If
Next i
'SQL = SQL & ")"
End If
Bonjour,
malheureusement, cela ne solutionne pas mon problème, j'ai ommis de préciser
qu' une recette contenait plusieurs ingrédients donc je veux une recette qui
contient un ingredient like"*poulet*" ET un ingredient like "*citron*"
ta solution ne fonctionne que pour chercher deux chaines de caractères dans
un même libellé...
mais merci quand même ;)
Bonjour,
moi j'ai fais un truc du genre :
SELECT TBL_Fonction.FON_Libelle
FROM TBL_Fonction
WHERE TBL_Fonction.FON_Libelle Like "*Bibl*" AND TBL_Fonction.FON_Libelle
Like "*ponsable*";
cela me ramène : "Bibliothécaire responsable"
cela solutionne ton problème ??
Bonjour,
Je souhaite creer une appli permettant de rechercher des recettes selon
différents critères, je souhaite que mon formulaire de recherche soit le plus
modulables possibles, pour cela, l'utilisateur peut choisir les champs dans
lesquels il veut effectuer sa recherche en cochant dans la case
correspondante.
Cette fonctionnalité marche très bien, cependant, je souhaite aller plus
loin, je veux que l'utilisateur puisse rechercher des recettes contenant du
poulet ET du citron par exemple. Pour cela, il tape dans la même zone de
texte "poulet ET citron", cependant, la requête qui est fabriquée par mon
code ne va chercher que les libellés d'ingrédients contenant poulet ET citron
alors que je veux les ingrédients contenant poulet ET les ingredients
contenant Citron....
J'espère que je vous ai suffisament clairement expliqué mon problème.
Je vous joins une partie de mon code au cas où quelqu un pourrait me
débloquer.
en vous remerciant d'avance...
'La requête sera contenue dans la variable "SQL"'
Dim SQL As String
'Requête SQL de base qui selectionne tous les enregistrements de la table
recette'
SQL = "SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette', T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet =
T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme) LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' "
'Si le bouton chk_recette est enfoncé, on cherche tous les enregistrements
qui ont
'un libellé semblable à celui tapé dans la zone de texte libellé'
If Me.Chk_recette = True Then
SQL = SQL & "AND T_recette.libelle_recette like '*" & Me.ZT_libelle & "*'"
End If
'Début du code qui me pose problème...!!!!!!!!!:
'Si le bouton Chk_ingredient est enfoncé, on cherche les recettes pour
lesquelles
'les ingrédients ont un libellé semblable à celui tapé dans la zone de texte
SQL = SQL & "AND ("
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*" & Mid(chaine, 1, i) &
"*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & "T_ingredient.libelle_ingredient like '*" & chaine & "*'"
End If
Next i
'SQL = SQL & ")"
End If
Bonjour,
malheureusement, cela ne solutionne pas mon problème, j'ai ommis de préciser
qu' une recette contenait plusieurs ingrédients donc je veux une recette qui
contient un ingredient like"*poulet*" ET un ingredient like "*citron*"
ta solution ne fonctionne que pour chercher deux chaines de caractères dans
un même libellé...
mais merci quand même ;)Bonjour,
moi j'ai fais un truc du genre :
SELECT TBL_Fonction.FON_Libelle
FROM TBL_Fonction
WHERE TBL_Fonction.FON_Libelle Like "*Bibl*" AND TBL_Fonction.FON_Libelle
Like "*ponsable*";
cela me ramène : "Bibliothécaire responsable"
cela solutionne ton problème ??Bonjour,
Je souhaite creer une appli permettant de rechercher des recettes selon
différents critères, je souhaite que mon formulaire de recherche soit le plus
modulables possibles, pour cela, l'utilisateur peut choisir les champs dans
lesquels il veut effectuer sa recherche en cochant dans la case
correspondante.
Cette fonctionnalité marche très bien, cependant, je souhaite aller plus
loin, je veux que l'utilisateur puisse rechercher des recettes contenant du
poulet ET du citron par exemple. Pour cela, il tape dans la même zone de
texte "poulet ET citron", cependant, la requête qui est fabriquée par mon
code ne va chercher que les libellés d'ingrédients contenant poulet ET citron
alors que je veux les ingrédients contenant poulet ET les ingredients
contenant Citron....
J'espère que je vous ai suffisament clairement expliqué mon problème.
Je vous joins une partie de mon code au cas où quelqu un pourrait me
débloquer.
en vous remerciant d'avance...
'La requête sera contenue dans la variable "SQL"'
Dim SQL As String
'Requête SQL de base qui selectionne tous les enregistrements de la table
recette'
SQL = "SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette', T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet =
T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme) LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' "
'Si le bouton chk_recette est enfoncé, on cherche tous les enregistrements
qui ont
'un libellé semblable à celui tapé dans la zone de texte libellé'
If Me.Chk_recette = True Then
SQL = SQL & "AND T_recette.libelle_recette like '*" & Me.ZT_libelle & "*'"
End If
'Début du code qui me pose problème...!!!!!!!!!:
'Si le bouton Chk_ingredient est enfoncé, on cherche les recettes pour
lesquelles
'les ingrédients ont un libellé semblable à celui tapé dans la zone de texte
SQL = SQL & "AND ("
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*" & Mid(chaine, 1, i) &
"*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & "T_ingredient.libelle_ingredient like '*" & chaine & "*'"
End If
Next i
'SQL = SQL & ")"
End If
Bonjour,
et pourquoi pas OR au lieu de AND
"Whitetown" a écrit dans le message de
news:Bonjour,
malheureusement, cela ne solutionne pas mon problème, j'ai ommis de
préciser
qu' une recette contenait plusieurs ingrédients donc je veux une recette
qui
contient un ingredient like"*poulet*" ET un ingredient like "*citron*"
ta solution ne fonctionne que pour chercher deux chaines de caractères
dans
un même libellé...
mais merci quand même ;)Bonjour,
moi j'ai fais un truc du genre :
SELECT TBL_Fonction.FON_Libelle
FROM TBL_Fonction
WHERE TBL_Fonction.FON_Libelle Like "*Bibl*" AND TBL_Fonction.FON_Libelle
Like "*ponsable*";
cela me ramène : "Bibliothécaire responsable"
cela solutionne ton problème ??Bonjour,
Je souhaite creer une appli permettant de rechercher des recettes selon
différents critères, je souhaite que mon formulaire de recherche soit
le plus
modulables possibles, pour cela, l'utilisateur peut choisir les champs
dans
lesquels il veut effectuer sa recherche en cochant dans la case
correspondante.
Cette fonctionnalité marche très bien, cependant, je souhaite aller
plus
loin, je veux que l'utilisateur puisse rechercher des recettes
contenant du
poulet ET du citron par exemple. Pour cela, il tape dans la même zone
de
texte "poulet ET citron", cependant, la requête qui est fabriquée par
mon
code ne va chercher que les libellés d'ingrédients contenant poulet ET
citron
alors que je veux les ingrédients contenant poulet ET les ingredients
contenant Citron....
J'espère que je vous ai suffisament clairement expliqué mon problème.
Je vous joins une partie de mon code au cas où quelqu un pourrait me
débloquer.
en vous remerciant d'avance...
'La requête sera contenue dans la variable "SQL"'
Dim SQL As String
'Requête SQL de base qui selectionne tous les enregistrements de la
table
recette'
SQL = "SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette',
T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet
RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet > >> > T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme)
LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN
T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' "
'Si le bouton chk_recette est enfoncé, on cherche tous les
enregistrements
qui ont
'un libellé semblable à celui tapé dans la zone de texte libellé'
If Me.Chk_recette = True Then
SQL = SQL & "AND T_recette.libelle_recette like '*" & Me.ZT_libelle &
"*'"
End If
'Début du code qui me pose problème...!!!!!!!!!:
'Si le bouton Chk_ingredient est enfoncé, on cherche les recettes pour
lesquelles
'les ingrédients ont un libellé semblable à celui tapé dans la zone de
texte
SQL = SQL & "AND ("
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*" & Mid(chaine, 1,
i) &
"*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & "T_ingredient.libelle_ingredient like '*" & chaine & "*'"
End If
Next i
'SQL = SQL & ")"
End If
Bonjour,
et pourquoi pas OR au lieu de AND
"Whitetown" <Whitetown@discussions.microsoft.com> a écrit dans le message de
news: E6F93EBC-EF61-4CC1-83A8-E3AD471C285D@microsoft.com...
Bonjour,
malheureusement, cela ne solutionne pas mon problème, j'ai ommis de
préciser
qu' une recette contenait plusieurs ingrédients donc je veux une recette
qui
contient un ingredient like"*poulet*" ET un ingredient like "*citron*"
ta solution ne fonctionne que pour chercher deux chaines de caractères
dans
un même libellé...
mais merci quand même ;)
Bonjour,
moi j'ai fais un truc du genre :
SELECT TBL_Fonction.FON_Libelle
FROM TBL_Fonction
WHERE TBL_Fonction.FON_Libelle Like "*Bibl*" AND TBL_Fonction.FON_Libelle
Like "*ponsable*";
cela me ramène : "Bibliothécaire responsable"
cela solutionne ton problème ??
Bonjour,
Je souhaite creer une appli permettant de rechercher des recettes selon
différents critères, je souhaite que mon formulaire de recherche soit
le plus
modulables possibles, pour cela, l'utilisateur peut choisir les champs
dans
lesquels il veut effectuer sa recherche en cochant dans la case
correspondante.
Cette fonctionnalité marche très bien, cependant, je souhaite aller
plus
loin, je veux que l'utilisateur puisse rechercher des recettes
contenant du
poulet ET du citron par exemple. Pour cela, il tape dans la même zone
de
texte "poulet ET citron", cependant, la requête qui est fabriquée par
mon
code ne va chercher que les libellés d'ingrédients contenant poulet ET
citron
alors que je veux les ingrédients contenant poulet ET les ingredients
contenant Citron....
J'espère que je vous ai suffisament clairement expliqué mon problème.
Je vous joins une partie de mon code au cas où quelqu un pourrait me
débloquer.
en vous remerciant d'avance...
'La requête sera contenue dans la variable "SQL"'
Dim SQL As String
'Requête SQL de base qui selectionne tous les enregistrements de la
table
recette'
SQL = "SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette',
T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet
RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet > >> > T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme)
LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN
T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' "
'Si le bouton chk_recette est enfoncé, on cherche tous les
enregistrements
qui ont
'un libellé semblable à celui tapé dans la zone de texte libellé'
If Me.Chk_recette = True Then
SQL = SQL & "AND T_recette.libelle_recette like '*" & Me.ZT_libelle &
"*'"
End If
'Début du code qui me pose problème...!!!!!!!!!:
'Si le bouton Chk_ingredient est enfoncé, on cherche les recettes pour
lesquelles
'les ingrédients ont un libellé semblable à celui tapé dans la zone de
texte
SQL = SQL & "AND ("
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*" & Mid(chaine, 1,
i) &
"*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & "T_ingredient.libelle_ingredient like '*" & chaine & "*'"
End If
Next i
'SQL = SQL & ")"
End If
Bonjour,
et pourquoi pas OR au lieu de AND
"Whitetown" a écrit dans le message de
news:Bonjour,
malheureusement, cela ne solutionne pas mon problème, j'ai ommis de
préciser
qu' une recette contenait plusieurs ingrédients donc je veux une recette
qui
contient un ingredient like"*poulet*" ET un ingredient like "*citron*"
ta solution ne fonctionne que pour chercher deux chaines de caractères
dans
un même libellé...
mais merci quand même ;)Bonjour,
moi j'ai fais un truc du genre :
SELECT TBL_Fonction.FON_Libelle
FROM TBL_Fonction
WHERE TBL_Fonction.FON_Libelle Like "*Bibl*" AND TBL_Fonction.FON_Libelle
Like "*ponsable*";
cela me ramène : "Bibliothécaire responsable"
cela solutionne ton problème ??Bonjour,
Je souhaite creer une appli permettant de rechercher des recettes selon
différents critères, je souhaite que mon formulaire de recherche soit
le plus
modulables possibles, pour cela, l'utilisateur peut choisir les champs
dans
lesquels il veut effectuer sa recherche en cochant dans la case
correspondante.
Cette fonctionnalité marche très bien, cependant, je souhaite aller
plus
loin, je veux que l'utilisateur puisse rechercher des recettes
contenant du
poulet ET du citron par exemple. Pour cela, il tape dans la même zone
de
texte "poulet ET citron", cependant, la requête qui est fabriquée par
mon
code ne va chercher que les libellés d'ingrédients contenant poulet ET
citron
alors que je veux les ingrédients contenant poulet ET les ingredients
contenant Citron....
J'espère que je vous ai suffisament clairement expliqué mon problème.
Je vous joins une partie de mon code au cas où quelqu un pourrait me
débloquer.
en vous remerciant d'avance...
'La requête sera contenue dans la variable "SQL"'
Dim SQL As String
'Requête SQL de base qui selectionne tous les enregistrements de la
table
recette'
SQL = "SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette',
T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet
RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet > >> > T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme)
LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN
T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' "
'Si le bouton chk_recette est enfoncé, on cherche tous les
enregistrements
qui ont
'un libellé semblable à celui tapé dans la zone de texte libellé'
If Me.Chk_recette = True Then
SQL = SQL & "AND T_recette.libelle_recette like '*" & Me.ZT_libelle &
"*'"
End If
'Début du code qui me pose problème...!!!!!!!!!:
'Si le bouton Chk_ingredient est enfoncé, on cherche les recettes pour
lesquelles
'les ingrédients ont un libellé semblable à celui tapé dans la zone de
texte
SQL = SQL & "AND ("
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*" & Mid(chaine, 1,
i) &
"*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & "T_ingredient.libelle_ingredient like '*" & chaine & "*'"
End If
Next i
'SQL = SQL & ")"
End If
OR fonctionne tres bien, si je lui tape poulet ou saint jacques, il me
sort
toutes les recettes de poulet et toutes les recettes de st jacques....il
vien
bien chercher les recettes qui ont un poulet dans leurs libellé ingrédient
ou
un st jacques...
Pour le ET, si je tape poulet ET curry, il ne me trouve rien alors que
j'ai
bien une recette qui correspond à ca, si je tape poulet et *cu*, il me
trouve
ma recette de poulet au curry, sauf qu'il la trouve grâce au fait que mon
ingredient poulet a pour libellé "poulet cuisse 125g"....il cherche donc
dans
un ingrédient les deux termes...
j ai tenté le IN mais on me renvoi une erreur :
"erreur 3075 erreur de syntaxe (opérateur absent) dans l'expression
'T_recette.code_prototype <> '' AND WHERE
T_detail_recette.libelle_ingredient
IN ( SELECT T_detail_recette.libelle_ingredient FROM T_detail_recette
WHERE
T_ingredient.libelle_ingredient like'*poulet*' AND
T_ingredient.libelle_ingredient like '*curry*')'.
le code correspondant étant
If Me.Chk_ingredient = True Then
SQL = SQL & "AND WHERE T_detail_recette.libelle_ingredient IN (
SELECT T_detail_recette.libelle_ingredient FROM T_detail_recette WHERE "
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
i = 1
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like
'*" & Mid(chaine, 1, i) & "*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*"
&
chaine & "*')"
End If
Next i
End If
SQL = SQL & ";"Bonjour,
et pourquoi pas OR au lieu de AND
"Whitetown" a écrit dans le message
de
news:Bonjour,
malheureusement, cela ne solutionne pas mon problème, j'ai ommis de
préciser
qu' une recette contenait plusieurs ingrédients donc je veux une
recette
qui
contient un ingredient like"*poulet*" ET un ingredient like "*citron*"
ta solution ne fonctionne que pour chercher deux chaines de caractères
dans
un même libellé...
mais merci quand même ;)Bonjour,
moi j'ai fais un truc du genre :
SELECT TBL_Fonction.FON_Libelle
FROM TBL_Fonction
WHERE TBL_Fonction.FON_Libelle Like "*Bibl*" AND
TBL_Fonction.FON_Libelle
Like "*ponsable*";
cela me ramène : "Bibliothécaire responsable"
cela solutionne ton problème ??Bonjour,
Je souhaite creer une appli permettant de rechercher des recettes
selon
différents critères, je souhaite que mon formulaire de recherche
soit
le plus
modulables possibles, pour cela, l'utilisateur peut choisir les
champs
dans
lesquels il veut effectuer sa recherche en cochant dans la case
correspondante.
Cette fonctionnalité marche très bien, cependant, je souhaite aller
plus
loin, je veux que l'utilisateur puisse rechercher des recettes
contenant du
poulet ET du citron par exemple. Pour cela, il tape dans la même
zone
de
texte "poulet ET citron", cependant, la requête qui est fabriquée
par
mon
code ne va chercher que les libellés d'ingrédients contenant poulet
ET
citron
alors que je veux les ingrédients contenant poulet ET les
ingredients
contenant Citron....
J'espère que je vous ai suffisament clairement expliqué mon
problème.
Je vous joins une partie de mon code au cas où quelqu un pourrait me
débloquer.
en vous remerciant d'avance...
'La requête sera contenue dans la variable "SQL"'
Dim SQL As String
'Requête SQL de base qui selectionne tous les enregistrements de la
table
recette'
SQL = "SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette',
T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet
RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet >> >> > T_recette.id_chef_de_projet) ON T_gamme.id_gamme =
T_recette.id_gamme)
LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN
T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' "
'Si le bouton chk_recette est enfoncé, on cherche tous les
enregistrements
qui ont
'un libellé semblable à celui tapé dans la zone de texte libellé'
If Me.Chk_recette = True Then
SQL = SQL & "AND T_recette.libelle_recette like '*" & Me.ZT_libelle
&
"*'"
End If
'Début du code qui me pose problème...!!!!!!!!!:
'Si le bouton Chk_ingredient est enfoncé, on cherche les recettes
pour
lesquelles
'les ingrédients ont un libellé semblable à celui tapé dans la zone
de
texte
SQL = SQL & "AND ("
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*" & Mid(chaine,
1,
i) &
"*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & "T_ingredient.libelle_ingredient like '*" & chaine &
"*'"
End If
Next i
'SQL = SQL & ")"
End If
OR fonctionne tres bien, si je lui tape poulet ou saint jacques, il me
sort
toutes les recettes de poulet et toutes les recettes de st jacques....il
vien
bien chercher les recettes qui ont un poulet dans leurs libellé ingrédient
ou
un st jacques...
Pour le ET, si je tape poulet ET curry, il ne me trouve rien alors que
j'ai
bien une recette qui correspond à ca, si je tape poulet et *cu*, il me
trouve
ma recette de poulet au curry, sauf qu'il la trouve grâce au fait que mon
ingredient poulet a pour libellé "poulet cuisse 125g"....il cherche donc
dans
un ingrédient les deux termes...
j ai tenté le IN mais on me renvoi une erreur :
"erreur 3075 erreur de syntaxe (opérateur absent) dans l'expression
'T_recette.code_prototype <> '' AND WHERE
T_detail_recette.libelle_ingredient
IN ( SELECT T_detail_recette.libelle_ingredient FROM T_detail_recette
WHERE
T_ingredient.libelle_ingredient like'*poulet*' AND
T_ingredient.libelle_ingredient like '*curry*')'.
le code correspondant étant
If Me.Chk_ingredient = True Then
SQL = SQL & "AND WHERE T_detail_recette.libelle_ingredient IN (
SELECT T_detail_recette.libelle_ingredient FROM T_detail_recette WHERE "
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
i = 1
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like
'*" & Mid(chaine, 1, i) & "*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*"
&
chaine & "*')"
End If
Next i
End If
SQL = SQL & ";"
Bonjour,
et pourquoi pas OR au lieu de AND
"Whitetown" <Whitetown@discussions.microsoft.com> a écrit dans le message
de
news: E6F93EBC-EF61-4CC1-83A8-E3AD471C285D@microsoft.com...
Bonjour,
malheureusement, cela ne solutionne pas mon problème, j'ai ommis de
préciser
qu' une recette contenait plusieurs ingrédients donc je veux une
recette
qui
contient un ingredient like"*poulet*" ET un ingredient like "*citron*"
ta solution ne fonctionne que pour chercher deux chaines de caractères
dans
un même libellé...
mais merci quand même ;)
Bonjour,
moi j'ai fais un truc du genre :
SELECT TBL_Fonction.FON_Libelle
FROM TBL_Fonction
WHERE TBL_Fonction.FON_Libelle Like "*Bibl*" AND
TBL_Fonction.FON_Libelle
Like "*ponsable*";
cela me ramène : "Bibliothécaire responsable"
cela solutionne ton problème ??
Bonjour,
Je souhaite creer une appli permettant de rechercher des recettes
selon
différents critères, je souhaite que mon formulaire de recherche
soit
le plus
modulables possibles, pour cela, l'utilisateur peut choisir les
champs
dans
lesquels il veut effectuer sa recherche en cochant dans la case
correspondante.
Cette fonctionnalité marche très bien, cependant, je souhaite aller
plus
loin, je veux que l'utilisateur puisse rechercher des recettes
contenant du
poulet ET du citron par exemple. Pour cela, il tape dans la même
zone
de
texte "poulet ET citron", cependant, la requête qui est fabriquée
par
mon
code ne va chercher que les libellés d'ingrédients contenant poulet
ET
citron
alors que je veux les ingrédients contenant poulet ET les
ingredients
contenant Citron....
J'espère que je vous ai suffisament clairement expliqué mon
problème.
Je vous joins une partie de mon code au cas où quelqu un pourrait me
débloquer.
en vous remerciant d'avance...
'La requête sera contenue dans la variable "SQL"'
Dim SQL As String
'Requête SQL de base qui selectionne tous les enregistrements de la
table
recette'
SQL = "SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette',
T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet
RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet >> >> > T_recette.id_chef_de_projet) ON T_gamme.id_gamme =
T_recette.id_gamme)
LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN
T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' "
'Si le bouton chk_recette est enfoncé, on cherche tous les
enregistrements
qui ont
'un libellé semblable à celui tapé dans la zone de texte libellé'
If Me.Chk_recette = True Then
SQL = SQL & "AND T_recette.libelle_recette like '*" & Me.ZT_libelle
&
"*'"
End If
'Début du code qui me pose problème...!!!!!!!!!:
'Si le bouton Chk_ingredient est enfoncé, on cherche les recettes
pour
lesquelles
'les ingrédients ont un libellé semblable à celui tapé dans la zone
de
texte
SQL = SQL & "AND ("
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*" & Mid(chaine,
1,
i) &
"*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & "T_ingredient.libelle_ingredient like '*" & chaine &
"*'"
End If
Next i
'SQL = SQL & ")"
End If
OR fonctionne tres bien, si je lui tape poulet ou saint jacques, il me
sort
toutes les recettes de poulet et toutes les recettes de st jacques....il
vien
bien chercher les recettes qui ont un poulet dans leurs libellé ingrédient
ou
un st jacques...
Pour le ET, si je tape poulet ET curry, il ne me trouve rien alors que
j'ai
bien une recette qui correspond à ca, si je tape poulet et *cu*, il me
trouve
ma recette de poulet au curry, sauf qu'il la trouve grâce au fait que mon
ingredient poulet a pour libellé "poulet cuisse 125g"....il cherche donc
dans
un ingrédient les deux termes...
j ai tenté le IN mais on me renvoi une erreur :
"erreur 3075 erreur de syntaxe (opérateur absent) dans l'expression
'T_recette.code_prototype <> '' AND WHERE
T_detail_recette.libelle_ingredient
IN ( SELECT T_detail_recette.libelle_ingredient FROM T_detail_recette
WHERE
T_ingredient.libelle_ingredient like'*poulet*' AND
T_ingredient.libelle_ingredient like '*curry*')'.
le code correspondant étant
If Me.Chk_ingredient = True Then
SQL = SQL & "AND WHERE T_detail_recette.libelle_ingredient IN (
SELECT T_detail_recette.libelle_ingredient FROM T_detail_recette WHERE "
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
i = 1
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like
'*" & Mid(chaine, 1, i) & "*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*"
&
chaine & "*')"
End If
Next i
End If
SQL = SQL & ";"Bonjour,
et pourquoi pas OR au lieu de AND
"Whitetown" a écrit dans le message
de
news:Bonjour,
malheureusement, cela ne solutionne pas mon problème, j'ai ommis de
préciser
qu' une recette contenait plusieurs ingrédients donc je veux une
recette
qui
contient un ingredient like"*poulet*" ET un ingredient like "*citron*"
ta solution ne fonctionne que pour chercher deux chaines de caractères
dans
un même libellé...
mais merci quand même ;)Bonjour,
moi j'ai fais un truc du genre :
SELECT TBL_Fonction.FON_Libelle
FROM TBL_Fonction
WHERE TBL_Fonction.FON_Libelle Like "*Bibl*" AND
TBL_Fonction.FON_Libelle
Like "*ponsable*";
cela me ramène : "Bibliothécaire responsable"
cela solutionne ton problème ??Bonjour,
Je souhaite creer une appli permettant de rechercher des recettes
selon
différents critères, je souhaite que mon formulaire de recherche
soit
le plus
modulables possibles, pour cela, l'utilisateur peut choisir les
champs
dans
lesquels il veut effectuer sa recherche en cochant dans la case
correspondante.
Cette fonctionnalité marche très bien, cependant, je souhaite aller
plus
loin, je veux que l'utilisateur puisse rechercher des recettes
contenant du
poulet ET du citron par exemple. Pour cela, il tape dans la même
zone
de
texte "poulet ET citron", cependant, la requête qui est fabriquée
par
mon
code ne va chercher que les libellés d'ingrédients contenant poulet
ET
citron
alors que je veux les ingrédients contenant poulet ET les
ingredients
contenant Citron....
J'espère que je vous ai suffisament clairement expliqué mon
problème.
Je vous joins une partie de mon code au cas où quelqu un pourrait me
débloquer.
en vous remerciant d'avance...
'La requête sera contenue dans la variable "SQL"'
Dim SQL As String
'Requête SQL de base qui selectionne tous les enregistrements de la
table
recette'
SQL = "SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette',
T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet
RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet >> >> > T_recette.id_chef_de_projet) ON T_gamme.id_gamme =
T_recette.id_gamme)
LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN
T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' "
'Si le bouton chk_recette est enfoncé, on cherche tous les
enregistrements
qui ont
'un libellé semblable à celui tapé dans la zone de texte libellé'
If Me.Chk_recette = True Then
SQL = SQL & "AND T_recette.libelle_recette like '*" & Me.ZT_libelle
&
"*'"
End If
'Début du code qui me pose problème...!!!!!!!!!:
'Si le bouton Chk_ingredient est enfoncé, on cherche les recettes
pour
lesquelles
'les ingrédients ont un libellé semblable à celui tapé dans la zone
de
texte
SQL = SQL & "AND ("
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*" & Mid(chaine,
1,
i) &
"*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & "T_ingredient.libelle_ingredient like '*" & chaine &
"*'"
End If
Next i
'SQL = SQL & ")"
End If