Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/05/2008, 22h00   #1
Invité de passage
 
Inscription : septembre 2007
Messages : 17
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 17
Points : 4
Points : 4
Par défaut Erreur EOF ADODB.Field erreur '800a0bcd'

Bonsoir,

je bloque depuis une semaine sur ce problème ...
j'ai une requete qui vient chercher un mot entré dans un textfield via un formulaire dans une base access et qui doit afficher le résultat trouvé et à chaque fois j'ai le message suivant :

ADODB.Field erreur '800a0bcd'
BOF ou EOF est égal à True ou l'enregistrement actuel a été supprimé. L'opération demandée nécessite un enregistrement actuel.


Je précise qu'il y a bien des données valides dans la base.
Si quelqu'un a une idée fumante je suis preneur
et voici le code en question (juste une partie)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<%
Dim Recordset1__MMColParam
Recordset1__MMColParam = "1"
If (Request.Form("trouvertexte") <> "") Then 
  Recordset1__MMColParam = Request.Form("trouvertexte")
End If
 
Dim Recordset1
Dim Recordset1_numRows
 
Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_fef_STRING
Recordset1.Source = "SELECT * FROM Table1 WHERE Marque LIKE '%" + Replace(Recordset1__MMColParam, "'", "''") + "%'"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()
Recordset1_numRows = 0
%>
 
        <td> <%=(Recordset1.Fields.Item("Marque").Value)%> </td>
 
 <form name="form1" method="post" action="">
	  Trouver un produit FeF 
        <input name="trouvertexte" type="text" id="trouvertexte">
          <input name="trouverbouton" type="submit" id="trouverbouton" value="Fef">
</form>      
 
<%
Recordset1.Close()
Set Recordset1 = Nothing
%>
PITP2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 23h50   #2
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 248
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 248
Points : 1 205
Points : 1 205
Envoyer un message via MSN à kaiser59
Salut,

Tout d'abord quand tu mets du code merci d'utiliser les balises code que tu peux repérer par le # on voit un peu plus claire

Ensuite, tu peux faire plus simple en code càd connexion+recordset+fermeture de bd pcq la c'est un peu le foutoir on va dire.
Peux tu me dire comment ceci :
Code :
Recordset1.ActiveConnection = MM_fef_STRING
Va trouver le nom de ta base ????

Ensuite ton code est mal ordonné, soit tu mets le résultat de la recherche avant ou après ton formulaire mais pas en plein milieu de ton code avec le formulaire en prime.

Perso, je pense qu'il est plus propre d'avoir un code de ce genre :
Code html :
1
2
3
4
<form action="mapage.asp" method="post">
 <p><label>Trouver un produit FeF : </label><input type="text" name="trouvertexte" /></p>
 <p><input type="submit" name="ok" value="Envoyer" /></p>
</form>

Code asp :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
'Dans la même page nommé mapage.asp à la suite du formulaire
if request.form("ok") <> "" then
Recordset1__MMColParam = Request.Form("trouvertexte")
 
'Connexion à la BD :
DSN_BASE = "DBQ=" & Request.ServerVariables("APPL_PHYSICAL_PATH") & "bd.mdb" & ";Driver={Microsoft Access Driver (*.mdb)};Driverld=25"
 
'Creation du recordset
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open DSN_BASE
Set RS = Server.CreateObject("ADODB.Recordset")
 
'Requete sql
Sql="SELECT * FROM Table1 WHERE Marque LIKE '%"& Replace(Recordset1__MMColParam, "'", "''") &"%'"
Rs.open Sql, conn
 
 if rs.eof then 
   'si il n'y a pas d'enregistrement répondant à la requete alors :
   Response.write "Aucun résultat correspondant à votre recherche"
 else
  'si résultat trouver on affiche tous les résultats, on n'est pas censé savoir cb d'enregistrement il existe dans la table
   do while not rs.eof 
     response.write rs(n) &"<br>"&vbcrlf
   rs.movenext
   loop
 end if
 
 Set RS = Nothing
 Conn.Close
 Set Conn = Nothing
end if

n = est un entier de 0 à n-1 nombre de colonne de ta table, à titre d'exemple la colonne id souvent la 1ere vaut rs(0)

Voilou ceci devrait mieux fonctionner je pense
__________________
Ne dites pas Java pour dire Javascript ! Ces deux codes n'ont rien à voir ! // Essayez d'expliquer, de la façon la plus claire possible votre problème. // Parfois une image vaut mieux qu'un long discours

FAQ ASP
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 17h59   #3
Invité de passage
 
Inscription : septembre 2007
Messages : 17
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 17
Points : 4
Points : 4
Par défaut De Erreur EOF ADODB.Field erreur '800a0bcd' à ADODB.Recordset erreur '800a0cc1'

Rebonjour,

merci pour votre aide. J'ai modifié mon code comme vous me l'aviez suggéré mais j'ai maintenant cette erreur ...
ADODB.Recordset erreur '800a0cc1'
Impossible de trouver l'objet dans la collection correspondant au nom ou à la référence ordinale demandé.
/mapage.asp, ligne 39

j'ai juste changé dans votre code l'emplacement de ma BD et mapage.asp avec le nom de ma page !!!
j'ai meme créé une page vierge ASP Vbscript nommée mapage.asp et j'y ai mis uniquement votre code .. et tjrs la même erreur ADODB.Recordset erreur '800a0cc1'

Je travaille sous dreamweaver et je ne vois pas apparaitre dans la partie droite "comportement" mon recordset est ce aussi normal ?
PITP2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2008, 21h01   #4
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 248
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 248
Points : 1 205
Points : 1 205
Envoyer un message via MSN à kaiser59
As tu remplacer le n de rs(n) par un nombre entier genre rs(0) etc...

Le message d'erreur qu'il mentionne c'est simplement qu'il ne trouve pas le champ de ta table correspondant avec le rs(qqch)

Pour être plus sûr, essaye d'abord un champ que tu connais dans ta table pour faire ceci :
Code asp :
1
2
 
response.write rs("monchamp")
__________________
Ne dites pas Java pour dire Javascript ! Ces deux codes n'ont rien à voir ! // Essayez d'expliquer, de la façon la plus claire possible votre problème. // Parfois une image vaut mieux qu'un long discours

FAQ ASP
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2008, 15h16   #5
Invité de passage
 
Inscription : septembre 2007
Messages : 17
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 17
Points : 4
Points : 4
Merci pour la soluce. J'ai mis un pour n et cela foncionne impec
merci encore !
PITP2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h54.


 
 
 
 
Partenaires

Hébergement Web