19. juni 2006 - 00:37Der 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.
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
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.
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
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
Synes godt om
Ny brugerNybegynder
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.