Garder mon Recordset ouvert

Garder mon Recordset ouvert - ASP - Programmation

Marsh Posté le 30-09-2003 à 20:03:26    

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 :
  1. dim cnn       ' connexion to the database
  2.   dim rstData   ' recordset object
  3.   dim SQLText   ' String representing the SQL Commands
  4.   dim intfields ' fields pointer
  5.   action    = Request.Form("Btn" )
  6.   if action = "" then
  7.     ' we assume the script goes there when page opens
  8.     ' connection to the DB file
  9.     Set cnn     = server.CreateObject("ADODB.Connection" )
  10.     Set rstData = server.CreateObject("ADODB.Recordset" )
  11.     cnn.open    = "Driver=Microsoft Access Driver (*.mdb);DBQ=C:\Inetpub\wwwroot\somemdbfile.mdb"
  12.     SQLText     = "SELECT field1, field2, field3, field4 FROM tbl_1"
  13.     rstData.Open SQLText, cnn, 3, 3
  14.     rstData.movefirst
  15.     ' creating the table that will display all that
  16.     Response.Write("<table class='Cadre' align='center'>" )
  17.     for intfields = 0 to rstData.fields.count - 1
  18.       Response.Write("<tr><td class='Col'><br><div align='center'>" & rstData.fields(intfields).Name  & "</div></td>" )
  19.       Response.Write("<td class='Col'><br><div align='center'>"     & rstData.fields(intfields).Value & "</div></td>" )
  20.       Response.Write("</tr>" )
  21.    next
  22.    Response.Write("</table>" )
  23.    'test
  24.    intfields = rstData.AbsolutePosition ' < ICI ca retourne tjrs -1
  25.    Response.Write(Cstr(intfields))
  26.    rstData.Movefirst
  27.    ' We keep the recordset open   
  28.   end if ' action = ""
  29.   if action = "Back" then
  30.     ' first we test where is the record set pionter
  31.    Response.Write("Yeh Back" )
  32.    if rstData.BOF then '<--- ca plante LA ICI MAINTENANT
  33.       rstData.movelast
  34.       ' display the table
  35.        intfields = rstData.AbsolutePosition
  36.        Response.Write("<table class='Cadre' align='center'>" )
  37.        Response.Write("<tr><td class='Col'><br><div align='center'>" & rstData.fields(intfields).Name  & "</div></td>" )
  38.        Response.Write("<td class='Col'><br><div align='center'>"     & rstData.fields(intfields).Value & "</div></td>" )
  39.        Response.Write("</tr>" )
  40.        Response.Write("</table>" )
  41.   else
  42.     ' the recordset is not a the table beginning
  43.      rstData.movePrevious
  44.     ' dislay table
  45.      intfields = rstData.AbsolutePosition
  46.      Response.Write("<table class='Cadre' align='center'>" )
  47.      Response.Write("<tr><td class='Col'><br><div align='center'>" & rstData.fields(intfields).Name  & "</div></td>" )
  48.      Response.Write("<td class='Col'><br><div align='center'>"     & rstData.fields(intfields).Value & "</div></td>" )
  49.     Response.Write("</tr>" )
  50.     Response.Write("</table>" )
  51.   end if ' rstdata.BOF
  52. 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.  [:ddr555]  
 
Merci de votre aide  :jap:  
 
@++


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
Reply

Marsh Posté le 30-09-2003 à 20:03:26   

Reply

Marsh Posté le 30-09-2003 à 21:38:46    

en général on met le langage entre [ ] dans le titre, pas une info inutile :D
là tu mets [débutant] du coup le forum n'ajoute pas la sous-cat, croyant que tu as précisé le langage


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 01-10-2003 à 11:03:14    

antp a écrit :

en général on met le langage entre [ ] dans le titre, pas une info inutile :D
là tu mets [débutant] du coup le forum n'ajoute pas la sous-cat, croyant que tu as précisé le langage


 
Happy now ?  [:ddr555]  
 
 
@++


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Sujets relatifs:

Leave a Replay

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