Bonsoir a tous,
Voila j aimerai realise une page où l utilisateur peut naviger entre les enregistrements d une table (MS Access). Lorsque la page s ouvre la premiere fois le test "if action = "" then .... end if" est vrai donc dans cette branche je cree un recordset et une connexion. Je sais que c est mal et que je devrais utiliser l evenement onStart de la page mais je sais pas comment faire.
Cependant ca n est pas l objet de ma question la tout de suite.
Voila un extrait du code que j utilise
Code :
- dim cnn ' connexion to the database
- dim rstData ' recordset object
- dim SQLText ' String representing the SQL Commands
- dim intfields ' fields pointer
- action = Request.Form("Btn" )
- if action = "" then
- ' we assume the script goes there when page opens
- ' connection to the DB file
- Set cnn = server.CreateObject("ADODB.Connection" )
- Set rstData = server.CreateObject("ADODB.Recordset" )
- cnn.open = "Driver=Microsoft Access Driver (*.mdb);DBQ=C:\Inetpub\wwwroot\somemdbfile.mdb"
- SQLText = "SELECT field1, field2, field3, field4 FROM tbl_1"
- rstData.Open SQLText, cnn, 3, 3
- rstData.movefirst
- ' creating the table that will display all that
- Response.Write("<table class='Cadre' align='center'>" )
- for intfields = 0 to rstData.fields.count - 1
- Response.Write("<tr><td class='Col'><br><div align='center'>" & rstData.fields(intfields).Name & "</div></td>" )
- Response.Write("<td class='Col'><br><div align='center'>" & rstData.fields(intfields).Value & "</div></td>" )
- Response.Write("</tr>" )
- next
- Response.Write("</table>" )
- 'test
- intfields = rstData.AbsolutePosition ' < ICI ca retourne tjrs -1
- Response.Write(Cstr(intfields))
- rstData.Movefirst
- ' We keep the recordset open
- end if ' action = ""
- if action = "Back" then
- ' first we test where is the record set pionter
- Response.Write("Yeh Back" )
- if rstData.BOF then '<--- ca plante LA ICI MAINTENANT
- rstData.movelast
- ' display the table
- intfields = rstData.AbsolutePosition
- Response.Write("<table class='Cadre' align='center'>" )
- Response.Write("<tr><td class='Col'><br><div align='center'>" & rstData.fields(intfields).Name & "</div></td>" )
- Response.Write("<td class='Col'><br><div align='center'>" & rstData.fields(intfields).Value & "</div></td>" )
- Response.Write("</tr>" )
- Response.Write("</table>" )
- else
- ' the recordset is not a the table beginning
- rstData.movePrevious
- ' dislay table
- intfields = rstData.AbsolutePosition
- Response.Write("<table class='Cadre' align='center'>" )
- Response.Write("<tr><td class='Col'><br><div align='center'>" & rstData.fields(intfields).Name & "</div></td>" )
- Response.Write("<td class='Col'><br><div align='center'>" & rstData.fields(intfields).Value & "</div></td>" )
- Response.Write("</tr>" )
- Response.Write("</table>" )
- end if ' rstdata.BOF
- end if ' action = "back"
|
Donc, je ne fais pas de set rstData = nothing pour pouvoir me servir de l objet aussi longtemps que la page est ouverte (du moins c est ce que je pense). Malheureusement ca n a pas l air d etre le cas. J aimerai faire marche cette solution car elle m eviterai de garder en memoire le nom ou l identifiant de l enregistrement en cours de visionage.
Si ce n est pas possible, je crois savoir que je vais devoir utiliser une variable de session, or ca m ennui beaucoup car meme avec cette info je ne sais pas comment etre sur que je suis ou non a la fin/debut de ma table et l objet ADOrecordset permet de facilement savoir ca.
Voila, j espere avoir ete clair.
Merci de votre aide
@++
Message édité par KrzAramis le 01-10-2003 à 11:02:44
---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site