Avatar billede kronsj Nybegynder
19. juni 2006 - 00:37 Der er 6 kommentarer og
1 løsning

Trække Recordset ud af en session-variable

Der findes mange eksempler på hvordan man putter et recordset ind i en session-variabel. Men jeg synes ikke jeg kan finde eksempler på hvordan trækker det ud igen...

Det recordset som tildeles værdien fra Session("Rs") skal vel være tomt, og behøves vel ikke at have nogle connection.
Men uden connection kan man vidst heller ikke åbne det.
Der findes dog begrebet "Fabricated Recordset", som vidst kræver at man opretter strukturen i recordsettet.

Nogen forslag ?
Avatar billede madeindk Nybegynder
19. juni 2006 - 01:37 #1
Hej! Du trækker jo en session ud ved hjælp af:

<%
response.write(session("id"))
%>

Er det mon det du mener?
Avatar billede fennec Nybegynder
19. juni 2006 - 08:59 #2
Sådan:
[side1.asp]
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "connection string"
set session("Rs") = Conn.execute("SELECT * FROM dinTabel")

[side2.asp]
while not session("Rs").eof
  response.write session("Rs")("kollonne")
  session("Rs").MoveNext
wend
Avatar billede kronsj Nybegynder
19. juni 2006 - 10:31 #3
Fennec :
Det lader til Session("RS") slæber rundt på en open connection, for hvis jeg lukker conn eller rs på side1.asp (efter at have puttet dem i Session("RS")), forbliver Session("Rs") lukket på side2.asp (?). Nu bruger jeg Access som database og hvis der forbliver en connection for hver session, skal der vel ikke meget til at man rammer grænsen for åbne connections (der kommer altså flere end 10 brugere på siden). MSDE ville vidst også hurtigt lukke for flere conn's
Avatar billede fennec Nybegynder
19. juni 2006 - 11:43 #4
Så lav det som et recordset object:

set session("Rs") = Server.CreateObject("ADODB.Recordset")
sql = "select * from AthenaWTM_Country"
session("Rs").open sql, Conn
Avatar billede kronsj Nybegynder
19. juni 2006 - 12:57 #5
Hmmmm... Hvorfor virker denne lille stump ikke ?

dim adoRS2
set adoRS2 = server.CreateObject("ADODB.Recordset")
....
set adoRS2 = Session("Aviser")
session("Aviser").close
while not adoRS2.EOF%>
    <tr><td><%=adoRS2.Fields("Avisnavn").Value%></td></tr>   
    <%adoRS2.MoveNext
wend %>

Når jeg fjerner linjen 'session("Aviser").close' virker delen fint. Det virker ikke logisk at lukning af session-var har indflydelse på brugen af adoRS2.

Men - fred være med det - lukningen kan jo bare foregå efter while-løkken.

Fennec : Send lige et Svar i stedet for en Kommentar, så får du lige en pose point.
Avatar billede fennec Nybegynder
19. juni 2006 - 13:49 #6
Det kan have noget at gøre med hvordan den den behandler rs-objekter. Kunne meget vel forstille mig at den laver en pointer i stedet for en kopi, så adoRS2 og Session("Aviser") faktisk er det samme recordset. Så Hvis du flytter frem i den ene så flytter du også frem i den anden. Hvilket også betyder at begge bliver lukket.

Du kunne jo for sjov prøve at udskrive Session("Aviser")("Avisnavn") i løkken i stedet for adoRS2.

while not adoRS2.EOF%>
    <tr><td><%= Session("Aviser")("Avisnavn") %></td></tr>   
    <%adoRS2.MoveNext
wend

.o) <-- One Eyed Jack
Avatar billede kronsj Nybegynder
20. juni 2006 - 09:19 #7
Efter dit tidligere forslag, med at referere til session-var direkte som et recordset, prøvede jeg det - med et godt resultat. Men løsningen bliver nok blot at lukke og slukke efter det hele er brugt. Jeg har prøvet lidt med "activeconnection = nothing" eller "recordset.clone"....men der er mange ting i MS-universet der ikke er helt logiske....
Thanks
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester