Dans ma page appelée "default.asp", j'ai un formulaire qui permet de faire des recherches dans 3 tables différentes :
Table principale : Tevent
Table des régions : Tarea
Table descriptive : Tcategory
Chaque champ du formulaire est bien nommé et ces noms seront récupérés dans la page où afficher le résultat, à savoir la page "view.asp"
Voici quelques caractéristiques de ma page "view.asp"
Récupérer la valeur des champs et les mettre dans les variables (du même nom pour simplifier) :
annonce = Request.Form("annonce")
category = Request.Form("category")
origin = Request.Form("origin")
mydate = Request.Form("date")
ville = Request.Form("ville")
canton = Request.Form("canton")
Construction de la clause Where pour faire la recherche avec plusieurs conditions
WhereClause = "1=1"
IF annonce <> "" THEN
WhereClause = WhereClause & " AND Tevent.Fevent LIKE '%" & annonce & "%'"
END IF
IF category <> "" THEN
WhereClause = WhereClause & " AND Tcategory.Fcategory LIKE '%" & category & "%'"
END IF
IF origin <> "" THEN
WhereClause = WhereClause & " AND Tevent.Forigine LIKE '%" & origin & "%'"
END IF
IF mydate <> "" THEN
WhereClause = WhereClause & " AND Tevent.Fdate LIKE '%" & mydate & "%'"
END IF
IF ville <> "" THEN
WhereClause = WhereClause & " AND Tevent.Fville LIKE '%" & ville & "%'"
END IF
IF canton <> "" THEN
WhereClause = WhereClause & " AND Tarea.Fcanton LIKE '%" & canton & "%'"
END IF
REM mettre la clause Where en mémoire session
Session("WhereClause") = WhereClause
Et voici le résultat provenant des 3 tables que je veux afficher dans ma page view.asp
<%=RS("Fevent")%>
<%=RS("Forigine")%>
<%=RS("Fdate")%>
<%=RS("Fville")%>
Si je sélectionne dans ma 1ère page que des données provenant de ma table Tevent, alors le résultat s'affiche correctement selon les critères préalablement définis, mais seulement si je fais une requête SQL simple sur la table principale (MySql = "SELECT * From Tevent WHERE "& Session("WhereClause") &" ORDER BY Fville, Fdate DESC").
Par contre, si je choisis des données pouvant se trouver dans l'une de mes 2 autres tables, alors, j'ai une erreur SQL lorsque j'utilise la requête SQL suivante :
MySql = "SELECT * FROM Tcategory INNER JOIN (Tarea INNER JOIN Tevent ON Tarea.noid=Tevent.area_key) ON Tcategory.noid=Tevent.categ_key WHERE "& Session("WhereClause") &" ORDER BY Fville, Fdate DESC"
"Impossible de trouver l'objet dans la collection correspondant au nom ou à la référence ordinale demandé."
Je n'arrive pas à comprendre si le problème provient de ma requête SQL ou si l'une des variables est mal définie.
Merci de m'aider à comprendre ce casse-tête.