Recordset : besoin aide svp !!!!

anonyme - 5 oct. 2001 à 11:01
 kiminox - 5 oct. 2001 à 16:45
Bonjour a tous. Aider moi pour ce bug :
Le fichier "deplacement.asp" sert à afficher une liste d'enregistrements d'une table d'une base access dans l'ordre ou l'ordre inverse à partir de n'importe quel enregistrement de la table TousFilms de la base cinema2000.mdb.
J'ai controlé : 1-les fautes d'orthographes, majuscules également. 2- L' acces à la base.. etc..
Aucun message d'erreur apparait. Pourtant ça bug :
Le pointeur se positionne toujours à l'enregistrement n°11. Malgré les méthodes employés : movefirst, move .... Il considère toujours que IDTitre=11 est le 1er enregistrement de cette table alors que c'est le 1. Mais le pire est que j'ai testé le fichier exemple du livre "Initiation à ASP3" de www.wrox.fr, et le résultat est le meme :"Il croit que le premier enreg est le n°11.
J'ai alors conclu qu'il s'agissait d'une erreur dans la base (exemple telechargé sur le meme site).... Mais ou est l'erreur? Access bug???

Voici les fichiers et saisis d'écran :

deplacement.asp

<%
Option Explicit
Dim strConnexion
%>
<!-- #include file="SourceDonnees.asp" -->
<!-- METADATA TYPE="typelib"
FILE="C:\Program Files\Fichiers Communs\System\ado\msado15.dll" -->
<HTML>
<HEAD>
<title>Travail avec Recordset</title>
</HEAD>

<%
Dim chxEnregistrement, strDirection, strChaineSortie, intCompteur, intNbrEnregistrements
If Request.Form("ChxEnregistrement") <> "" Then
chxEnregistrement = Request.Form("ChxEnregistrement")
strDirection = Request.Form("Dir")
Else
chxEnregistrement = 1
strDirection = "ordre"
End If

Dim objRS
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open "TousFilms", strConnexion, adOpenStatic, adLockReadOnly, adCmdTable
intNbrEnregistrements = objRS.RecordCount
objRS.Move chxEnregistrement-1

strChaineSortie = "\" & _
\"----
Réalisateur, \" & _
\"Film, \"
If strDirection = \"ordre\" Then
While Not objRS.EOF
strChaineSortie = strChaineSortie & \"----
\" & _
\"" & objRS("IDTitre") & ": " & objRS("Realisateur") & ", \" & _
\"" & objRS("Titre") & ", \" & _
\"\"
objRS.MoveNext
Wend
objRS.MoveFirst
For intCompteur = 1 To chxEnregistrement-1
strChaineSortie = strChaineSortie & \"----
\" & _
\"" & objRS("IDTitre") & ": " & objRS("Realisateur") & ", \" & _
\"" & objRS("Titre") & ", \" & _
\"\"
objRS.MoveNext
Next
Else
While Not objRS.BOF
strChaineSortie = strChaineSortie & \"----
\" & _
\"" & objRS("IDTitre") & ": " & objRS("Realisateur") & ", \" & _
\"" & objRS("Titre") & ", \" & _
\"\"
objRS.MovePrevious
Wend
objRS.MoveLast
For intCompteur = intNbrEnregistrements To chxEnregistrement+1 Step -1
strChaineSortie = strChaineSortie & \"----
\" & _
\"" & objRS("IDTitre") & ": " & objRS("Realisateur") & ", \" & _
\"" & objRS("Titre") & ", \" & _
\"\"
objRS.MovePrevious
Next
End If
strChaineSortie = strChaineSortie & "
"
objRS.Close
Set objRS = Nothing
Response.Write strChaineSortie
%>

<HR>
<FORM ACTION="Deplacement.asp" METHOD="POST">
Formater la liste !

Où voulez vous faire démarrer cette liste? Enregistrement
<SELECT SIZE=1 NAME="ChxEnregistrement">
<%
For intCompteur=1 To intNbrEnregistrements
Response.Write "<OPTION VALUE=" & intCompteur & ">" & intCompteur & "</OPTION>"
Next
%>
</SELECT>

Vous désirez afficher les enregistrements
Dans l'ordre
ou En ordre inversé
(sélection)?

</FORM>

</HTML>
_________________________________________________________________
dans le navigateur avec enreg 1 selectionné :

Réalisateur Film
11: C'est arrive près de chez vous (1992)
12: Franco Zeffirelli Hamlet (1990)
13: David Fincher Seven (1995)
14: Mel Gibson Braveheart (1995)
15: Quentin Tarantino Pulp Fiction (1994)
16: Robert Zemeckis Forrest Gump (1994) (AA) (D:GG) (GuldbaggeN)
17: Steven Spielberg Jurassic Park (1993)
18: Luc Besson Nikita (1990)
19: Roman Polanski Lunes de Fiel (1992)
20: Jonathan Demme Philadelphia (1993)
2: Alain Resnais On connaît la chanson
1: François Truffaut Jules et Jim
3: Cédric Klapisch Un air de famille
4: Gérard Krawczyk Taxi 2
5: Patrice Leconte La veuve de Saint-Pierre
6: Luc Besson Le cinquième élément
7: Robert Guédiguian Marius et Jeannette
8: Alexandre Arcady Là-bas mon pays
9: les frères Dardenne Rosetta
10: Bernard Rapp Une affaire de goût
21: Francis Coppola Dracula (1993)

Formater la liste !
Où voulez vous faire démarrer cette liste? Enregistrement 1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18-19-20-21 'dans une liste deroulante

Vous désirez afficher les enregistrements Dans l'ordre ou En ordre inversé (sélection)? 'dans une liste deroulante

_________________________________________________________________

L'erreur est toujours la meme quelque soit l'enreg selectionner dans la zone de liste du formulaire : il y a toujours 10 positions differentes entre l'enreg selectionne et celui affiché??????
aidez moi svp. merci.

1 réponse

Slt,

N'est ce pas un problème de provider?
Voici un extrait d'un article à ce propos :

Lorsque l'on initialise les propriétés relatives au fonctionnement d'un recordset (telles que CursorLocation, CursorType, LockType), et que l'on ouvre le recordset, le recordset que l'on va obtenir n'est pas forcément celui attendu. En effet, si par exemple on demande un curseur côté serveur, de type dynamique, à un provider qui ne supporte pas ce type de curseur (comme par exemple le provider Jet), le provider ne renvoie pas de message d'erreur. Il substitue le curseur non supporté par un type de curseur qu'il supporte, par exemple un curseur de type Keyset. Si par exemple on demande un curseur côté client de type dynamique, le curseur fourni sera de type statique.

Je te conseille d'aller sur le site msdn.microsoft.com, non pas je leur de la pub, mais faut reconnaitre qu'il y a presque tout ce que tu veux savoir sur les produits Microsoft!

KIM
0
Rejoignez-nous