Requete multi critere

Signaler
-
 chris -
Bonjour,

j'ai dans une bd access deux tables une T1 l'autre T2.
Dans T1 ce trouve Code,Description,Prix dans T2 Code,Option,Designation.

Le champ Code dans T1 correspond au code article qui est le même dans T2 cela permet de reperer les options disponible sur l'article.

J'ai cree un formulaire avec la méthode get ou je demande le code article puis les options.

A la validation du formulaire je recupere, dans
l'url page.asp/?Code=15547&Opt=102&Opt=105&Opt=108&Opt=

Mon pb c'est que je n'arrive pas à faire apparaitre
la valeur de ces codes.

Si quelqu'un pourrait m'aider.
Merci
Onha

9 réponses

Tu ne peux pas avoir plusieurs fois le même nom de variable!!
Tu n'as qu'à utiliser une boucle pour fabriquer les variables dont tu as besoin :
<%
for i=0 to Nb
%>
" value="TaValeur">
<%
next
%>

Quand tu récupères ton formulaire, tu balaies le formulaire avec NomDeTonForm.length

Voili, voilou

KIM
Bonjour,

Pas tout compris la.

je me permet d'insister. J'ai pu avancé un petit peu.
Dans mon formulaire je demande le code article et les codes options. Quand le formulaire est validé j'affiche le code de l'article, la désignation, le prix, le code option,la description, et le prix de l'option pour la premiere option, mais pour les autres je n'arrive qu'a affiché le code option mais pas la désignation et le prix.

comment faire svp
voici le script de la récupération du formulaire

<% Code_article= Request.QueryString("Code_article")%>
<% Options = Request.QueryString("Options")%>
<% Optiones = Request.QueryString("Optiones")%>
<% Option3 = Request.QueryString("Option3")%>
<%Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "feuillegestionvn"
SQLQuery = "SELECT DISTINCT Code_article,article,Px_article,Code_optio,Description,Px_option FROM tarif_art,tarif where tarif_art.code_article=tarif.code_optio AND Code_article="& Code_article&" AND Optio ='"& options & "'"
Set RS = OBJdbConnection.Execute(SQLQuery)%>
<% if RS.EOF then %>
<% Response.Redirect "aucun.htm" %>
<% else %>

<% end if %>

<form method="GET" action="valid.asp">


Code article: <%=rs("Code_Article")%>

Article: <%=rs("article")%>

Prix de Vente H.T : <%=rs("Px_vehicule")%>

Code Option : <% response.write " "&Options%>

Description : <%=rs("Description")%>

Prix HT Option : <%=rs("Px_option")%>

Code Option : <% response.write ""&Optiones%>

Description : <%=rs("Description")%>

Prix HT Option : <%=rs("Px_option")%>

Code Option : <% response.write ""&Option3%>

Description : <%=rs("Description")%>

Prix HT Option : <%=rs("Px_option")%>

Si vous pouvez m'aider :)
C'est normal : dans ta requête, tu demandes seulement seulement les info pour une option.
essaye cela :
SQLQuery = "SELECT DISTINCT Code_article, article, Px_article, Code_optio, Description, Px_option FROM tarif_art, tarif where tarif_art.code_article=tarif.code_optio AND Code_article="& Code_article&" AND Optio ='"& options & "'"
IF Optiones <> "" THEN SQLQuery SQLQuery & " OR Optio '"&Optiones&"'
END IF
IF Option3 <> "" THEN SQLQuery SQLQuery & " OR Optio '"&Option3&"'
END IF

<form method="GET" action="valid.asp">

Code article: <%=rs("Code_Article")%>

Article: <%=rs("article")%>

Prix de Vente H.T : <%=rs("Px_vehicule")%>

<%
SELECT CASE rs("Optio")
CASE Options
%>
Code Option : <% response.write " "&Options%>

Description : <%=rs("Description")%>

Prix HT Option : <%=rs("Px_option")%>
<%
CASE Optiones
%>
Code Option : <% response.write ""&Optiones%>

Description : <%=rs("Description")%>

Prix HT Option : <%=rs("Px_option")%>

<%
CASE Option3
%>
Code Option : <% response.write ""&Option3%>

Description : <%=rs("Description")%>

Prix HT Option : <%=rs("Px_option")%>

<%
CASE ELSE
END SELECT
%>

KIM
Ok Kim

Tout d'abord merci pour ton aide.

ca fonctionne mais juste une petite chose.

Quand je récupére les données il m'affiche uniquement le code,la désignation et le prix de la premiere option après j'ai que du blanc.

si tu peux encore m'aider sur ce cout la

je remets le script modifié

<% Code_modele = Request.QueryString("Code_modele")%>
<% Option1 = Request.QueryString("Option1")%>
<% Option2 = Request.QueryString("Option2")%>
<% Option3 = Request.QueryString("Option3")%>
<%Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "feuillegestionvn"
SQLQuery = "SELECT DISTINCT * FROM tarif_veh,tarif where tarif_veh.code_modele=tarif.code_optio AND Code_modele="& Code_modele &" AND Optio ='"& option1 &"' "
%>
<%Set RS = OBJdbConnection.Execute(SQLQuery)%>
<% if RS.EOF then %>
<% Response.Redirect "aucun.htm" %>
<% else %>
<% end if %>
<%
IF Option2 <> "" THENSQLQuery SQLQuery & " OR Optio '"&Option2&"'"
END IF
IF Option3 <> "" THENSQLQuery SQLQuery & " OR Optio '"&Option3&"'"
END IF
%>
Code Modèle : <% =rs("Code_modele")%>

Modèle : <% =rs("Modele")%>

Prix de Vente H.T : <%=rs("Px_vehicule")%>

<%
SELECT CASE rs("Optio")
CASE Option1
%>
Code Option : <% response.write " "&Option1%>

Description : <%=rs("Description")%>

Prix HT Option : <%=rs("Px_option")%>
<%
CASE Option2
%>
Code Option : <% response.write ""&Option2%>

Description : <%=rs("Description")%>

Prix HT Option : <%=rs("Px_option")%>

<%
CASE Option3
%>
Code Option : <% response.write ""&Option3%>

Description : <%=rs("Description")%>

Prix HT Option : <%=rs("Px_option")%>

<%
CASE ELSE
END SELECT
%>

Merci Onha
Voici le bon code je pense :

<%
Code_modele = Request.QueryString("Code_modele")
Option1 = Request.QueryString("Option1")
Option2 = Request.QueryString("Option2")
Option3 = Request.QueryString("Option3")
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "feuillegestionvn"
SQLQuery = "SELECT DISTINCT * FROM tarif_veh,tarif where tarif_veh.code_modele=tarif.code_optio AND Code_modele="& Code_modele &" AND Optio ='"& option1 &"' "
IF Option2 <> "" THEN SQLQuery SQLQuery & " OR Optio '"&Option2&"'"
END IF
IF Option3 <> "" THEN SQLQuery SQLQuery & " OR Optio '"&Option3&"'"
END IF
SQLQuery = SQLQuery & " GROUP BY Code_modele "
Set RS = OBJdbConnection.Execute(SQLQuery)
if Not RS.EOF then%>
Code Modèle : <%response.write("Code_modele")%>

Modèle : <%response.write("Modele")%>

Prix de Vente H.T : <%=rs("Px_vehicule")%>

<%DO WHILE NOT RS.EOF
SELECT CASE rs("Optio")
CASE Option1%>
Code Option : <% response.write(" "&Option1%>

Description : <%response.write("Description")%>

Prix HT Option : <%response.write("Px_option")%>

<% CASE Option2%>
Code Option : <% response.write(""&Option2%>

Description : <%response.write("Description")%>

Prix HT Option : <%response.write("Px_option")%>

<% CASE Option3%>
Code Option : <% response.write(""&Option3%>

Description : <%response.write("Description")%>

Prix HT Option : <%response.write("Px_option")%>

<% CASE ELSE
END SELECT
RS.MoveNext
LOOP
else
Response.Redirect "aucun.htm"
end if
RS.Close
SET RS = nothing
OBJdbConnection.Close
SET OBJdbConnection = nothing
%>

Onha, je te conseille d'éviter le <%= et de mettre <%response.write : combiner avec response.buffer=true, cela permet d'attendre la fin d'exécution du script avant d'envoyer le résultat vers le lien.Conséquence : pour des pages volumineuses, cela augmente le temps de réponse!!

Voila

KIM
je ne vois pas il me met

Microsoft OLE DB Provider for ODBC Drivers erreur '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Impossible d'effectuer un regroupement sur les champs sélectionnés avec '*'.

/feuille_gestion2/valid_option.asp, ligne 17

Voici la ligne 17
Set RS = OBJdbConnection.Execute(SQLQuery)

peut tu m'aider
je ne vois pas il me met

Microsoft OLE DB Provider for ODBC Drivers erreur '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Impossible d'effectuer un regroupement sur les champs sélectionnés avec '*'.

/feuille_gestion2/valid_option.asp, ligne 17

Voici la ligne 17
Set RS = OBJdbConnection.Execute(SQLQuery)

peut tu m'aider encore
parce qu'il faut que tu indiques les champs sur lesquels tu fais le GROUP BY :
SQLQuery = "SELECT DISTINCT Code_modele,Modele, Px_vehicule, Description, Px_option FROM tarif_veh,tarif where tarif_veh.code_modele=tarif.code_optio AND Code_modele="& Code_modele &" AND Optio ='"& option1 &"' "
IF Option2 <> "" THENSQLQuery SQLQuery & " OR Optio '"&Option2&"'"
END IF
IF Option3 <> "" THENSQLQuery SQLQuery & " OR Optio '"&Option3&"'"
END IF
SQLQuery = SQLQuery & " GROUP BY Code_modele,Modele, Px_vehicule, Description, Px_option "

Voilà (mais j'ai peut être oublié un champ)

KIM

PS : tu devrais regarder la doc SQL je pense
Avec l'aide de Kim (je précise qui ma aide.tres patiente).

Quand je récupére le résulat de mon formulaire.

Il se passe deux choses :

1)

Il ne veut pas m'inscrire le modele et le px_vehicule

2) il me repete au moin 300 fois les options 1 2 3.

si quelqu'un peut m'aider

voici le script

<%
Codemod = Request.QueryString("Codemod")
Option1 = Request.QueryString("Option1")
Option2 = Request.QueryString("Option2")
Option3 = Request.QueryString("Option3")
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "feuillegestionvn"
SQLQuery = "SELECT DISTINCT Code_modele, Modele, Px_vehicule, Code_option, optio, Description, Px_option FROM tarif_veh,tarif WHERE Code_modele="& Codemod &" AND Optio ='"& option1 &"' "
IF Option1 <> "" THENSQLQuery SQLQuery & " OR Optio '"& Option1 &"'"
END IF
IF Option2 <> "" THENSQLQuery SQLQuery & " OR Optio '"& Option2 &"'"
END IF
IF Option3 <> "" THENSQLQuery SQLQuery & " OR Optio '"& Option3 &"'"
END IF
SQLQuery = SQLQuery & " GROUP BY Code_modele, Modele, Px_vehicule, Code_option, optio, Description, Px_option "
Set RS = OBJdbConnection.Execute(SQLQuery)
if Not RS.EOF then%>
Code Modèle : <%response.write(" "&Codemod)%>

Modèle : <%response.write(" "&Modele)%>

Prix de Vente H.T : <%=rs("Px_vehicule")%>

<%DO WHILE NOT RS.EOF
SELECT CASE rs("Optio")
CASE Option1%>

Code Option : <% response.write(" "&Option1)%>

Description : <%=rs("Description")%>

Prix HT Option : <%=rs("Px_option")%>

<% CASE Option2%>
Code Option : <% response.write(" "&Option2)%>

Description : <%=rs("Description")%>

Prix HT Option : <%=rs("Px_option")%>

<% CASE Option3%>
Code Option : <% response.write(" "&Option3)%>

Description : <%=rs("Description")%>

Prix HT Option : <%=rs("Px_option")%>

<% CASE ELSE
END SELECT
RS.MoveNext
LOOP
else
Response.Redirect "aucun.htm"
end if
RS.Close
SET RS = nothing
OBJdbConnection.Close
SET OBJdbConnection = nothing
%>

Merci pour l'aide