filtrer en ASP

filtrer en ASP - ASP - Programmation

Marsh Posté le 10-05-2006 à 11:04:29    

bonjour =)
 
je viens rendre visite à des personnes plus expérimentées en ASP que je le suis.
j'ai un petit souci dans l'execution d'un filtre d'information en asp, d'une recherche donc.  
 
j'ai effectué une liste déroulante renvoyant des trigrammes(liés à des noms de personnes).par la selection d'un trigramme, j'aimerais que ce fichier agisse sur une liste, et rende les informations selon le trigramme.
 
pour être clair, à un trigramme est attribué un materiel,celui-ci étant identifié par un code
 
fichier recherche1.asp

Code :
  1. <!--#INCLUDE FILE="fct_connexion.inc"-->
  2. <html>
  3. <form action="liste1.asp" method="GET" target="cadre1">
  4.       <table border="0" width="100%" cellspacing="3" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0">
  5.         <tr>
  6.           <td><div align="right"><p>Collaborateurs :&nbsp; </td>
  7.           <td>
  8.           <select name="trigramme" size="1" tabindex="1">
  9.             <option initial value="Trigrammes">Tous</option>
  10. <%
  11. 'connexion à la base de données par l'intermédiaire de la fonction Connexion() du fichier fct_connexion.inc
  12. Connexion
  13. 'création du Recordset
  14. SQLQuery = "SELECT * FROM collaborateur "
  15. SQLQuery = SQLQuery & " order by trigramme "
  16. Set RS = OBJdbConnection.Execute(SQLQuery)
  17. 'Remplissage de la liste
  18. If Not estVide(RS) Then
  19.       Do Until RS.Eof
  20.          response.write("<option value='" & Replace(RS("trigramme" ),"'","&" ) & "'>" )   'Replace(RS("trigramme" ),"'","''" )
  21.          response.write(RS("trigramme" ))
  22.          response.write("</option>" )
  23.          RS.MoveNext
  24.       Loop
  25. End If
  26. 'Fermeture du Recordset par l'intermédiaire de la fonction Fermeture(...) du fichier fct_connexion.inc
  27. Fermeture RS
  28. %>
  29.     </select>
  30.   </td>               
  31.         </tr>
  32.         <tr>
  33.           <td></td>
  34.           <td><input type="submit" value="Valider" name="B1" tabindex="3"><input type="reset"
  35.           value="Effacer" name="B2" tabindex="4"></td>
  36.         </tr>
  37.       </table>
  38.     </form>
  39.     </td>
  40.     </table>
  41. </center></div>
  42. </body>
  43. </html>


 
fichier liste1.asp
 

Code :
  1. <%
  2. trigramme = Replace(Request.QueryString("trigramme" ),"&","''" )
  3. %>
  4. <%
  5. 'connexion à la base de données par l'intermédiaire de la fonction Connexion() du fichier fct_connexion.inc
  6. Connexion
  7. 'création du Recordset
  8. SQLQuery = "SELECT * FROM ads.rfi,collaborateur,service,site "
  9. SQLQuery = SQLQuery & " where fk_id_pers=id_pers AND fk_id_serv=id_serv AND fk_id_site=id_site"
  10. if trigramme <> "Trigrammes" and trigramme<>"" then
  11.    SQLQuery = SQLQuery & "where trigramme like '" & trigramme & "'"
  12. end if
  13. SQLQuery = SQLQuery & " ORDER BY trigramme"
  14. Set RS = OBJdbConnection.Execute(SQLQuery)
  15. %>
  16. <body background="../images/white.gif" bgcolor="#FFFFFF" topmargin="5"
  17. leftmargin="10">
  18. <table COLSPAN="8" BORDER="0" width="99%" cellpadding="3" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
  19.   <tr>
  20.     <th colspan="4" align="left"><img src="../images/rfi.gif"></th>
  21.   </tr>
  22.   <tr>
  23.     <td align="center" width="8%" bgcolor="#008080"><font color="#FFFF00">trigramme</font></td>
  24.     <td align="center" width="20%" bgcolor="#008080"><font color="#FFFF00">Code</font></td>
  25.     <td align="center" width="20%" bgcolor="#008080"><font color="#FFFF00">Nom</font></td>
  26.     <td align="center" width="20%" bgcolor="#008080"><font color="#FFFF00">Prenom</font></td>
  27.     <td align="center" width="20%" bgcolor="#008080"><font color="#FFFF00">Service</font></td>
  28.     <td align="center" width="20%" bgcolor="#008080"><font color="#FFFF00">Site</font></td>
  29.  
  30.    
  31.   </tr>
  32.   <tr>
  33. <% Do While Not RS.EOF %>
  34.     <td align="center"  width="8%" bgcolor="#FFFFC0" valign="top"><font color="#000080"><font color="#000080"><a HREF="detail1.asp?annonce=<%=RS("id_pers" )%>" target="cadre2"><%=UCase(RS("trigramme" ))%></a></font></td>
  35.      <td align="left" width="52%" bgcolor="#FFFFC0" valign="top"><font color="#000080"><%= UCase(RS("code" ))%> </font></td>
  36.     <td align="left" width="52%" bgcolor="#FFFFC0" valign="top"><font color="#000080"><%= UCase(RS("nom" ))
  37. %></font></td>


 
je met pas tout, ca devien vite lourd :pt1cable:
mais je pense que l'essentiel est la
 
 
 
 
lorsque je selection un trigramme dans la liste déroulante, j'ai l'erreur suivante :
 
Microsoft OLE DB Provider for SQL Server erreur '80040e14'
Ligne 1 : syntaxe incorrecte vers 'trigramme'.  
/Solution/stages/etds/liste1.asp, ligne 26  
 
ligne 26 = Set RS = OBJdbConnection.Execute(SQLQuery)
 
Cependant si j'enlève les clefs étrangères dans le fichier liste1.asp et que je travaille seulement sur la table collaborateur ( avec les champs, id_pers,trigramme, nom, prenom,fk_id_service ) il me renvoit correctement le nom et prenom correspondant au trigramme.
Mais dès que je lui demande de me renvoyer les informations en relation avec les autres tables.. pouf ca marche plus ( c'est-à-dire, le matériel, identifiant du matériel et sa localité ( site et service))


Message édité par kewl4ever le 10-05-2006 à 11:34:47
Reply

Marsh Posté le 10-05-2006 à 11:04:29   

Reply

Marsh Posté le 14-08-2006 à 11:34:56    

Pense à bien fermer tes balises html (ici)
<td><div align="right"><p>Collaborateurs :&nbsp; </td>
manque la fermeture du p puis du div
 
essaye :  
     Do while not RS.Eof
        response.write("<option value='" & Replace(RS("trigramme" ),"'","&" ) & "'>" )   'Replace(RS("trigramme" ),"'","''" )
        response.write(RS("trigramme" ))
        response.write("</option>" )
        RS.MoveNext
     Loop
 
au lieu de :
If Not estVide(RS) Then
     Do Until RS.Eof
        response.write("<option value='" & Replace(RS("trigramme" ),"'","&" ) & "'>" )   'Replace(RS("trigramme" ),"'","''" )
        response.write(RS("trigramme" ))
        response.write("</option>" )
        RS.MoveNext
     Loop
End If
 
 
T'as essayé :
SQLQuery = SQLQuery & "where trigramme = '" & trigramme & "'"
au lieu de :
SQLQuery = SQLQuery & "where trigramme like '" & trigramme & "'"
?
 
Enfin bon voilà ce que tu peux tester dans un premier temps, j'ai un peu survolé ton post vu que j'ai pas trop le tps de bien me pencher sur ton pb ^^

Reply

Marsh Posté le 16-08-2006 à 17:51:47    

SQL Server est un peu chatouilleux avec les filtres sur les chaines de caractère. Tu as testé ta requête avec un client SQL ?

Reply

Marsh Posté le 30-08-2006 à 13:18:05    

Teste ta requête SQL directement dans sql manager, juste pour voir si des résultats en sorte...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed