Newsgroup: it.comp.www.asp
Titolo: Recordset in un array (dinamico?)

Ciao a tutti!
Piccola domanda nefasta...
Ho un record set composto da n campi per rigo, vorrei metterlo in un array e
poi passarla ad un'altra pagina...
Come posso fare a far diventare "dinamico un array" (credo sia impossibile)
e come faccio a salvare n campi su di un solo array e farlo comportare come
se fosse un record set???
In sostanza mi spiego...
Ho un motore di ricerca x, che cerca dei dati presenti in un db, quando lo
trova mi tira fuori n campi per oggetto, dopo aver riempito il record set,
il motore non fa' altro che visualizzare le pagine, visualizza la prima
pagina e va bene, ma quando va a visualizzare la seconda pagina, deve rifare
la ricerca!
Spesso capita che trova moltissimi oggetti (200/300 anche piu'!) e ci sta'
non poco a riempire tutto il recordset... Facendo attendere anche parecchio
tempo!
Dapprima ho provato ad inserire il comando TOP 100 nella query (per limitare
a 100 risultati) ma non e' servito a nulla... Forse access 2000 non lo
supporta ed e' solo di SQL...
Il fatto sta' che per ogni pagina devo fare una ricerca...
Per questo cercavo un metodo per passare il contenuto del record set da una
pagina all'altra per evitare di rifare TUTTA la ricerca...
Spero di non avervi annoiato e spero che possiate aiutarmi ;)
Ciao ;^)=
--
Massimo "Red Foxy" Ciccio'
Home Page: 
http://www.redfoxy.go.to/
ICQ: 65721997
Fax: 1782217407
http://www.intelliad.com/?244F5F07
 <-- Iscrivetevi subito!!!
..o0 Dentro ognuno di noi c'e' un animale, sta' a noi scoprirlo e domarlo 0o.
--
Massimo "Red Foxy" Ciccio'
Home Page: 
http://www.redfoxy.go.to/
ICQ: 65721997
Fax: 1782217407
http://www.intelliad.com/?244F5F07
 <-- Iscrivetevi subito!!!
..o0 Dentro ognuno di noi c'e' un animale, sta' a noi scoprirlo e domarlo 0o.

la ricerca!
Perche' non salvi il recordset nelle variabili di Sessione e poi lo
riprendi senza doverlo riaprire daccapo ?
Ti basta controllare che il Recordset sia gia' aperto e riusarlo,
ricordati pero' di distruggerlo alla fine...
Davide

 ricordati pero' di distruggerlo alla fine...
Come si fa'?
Cioe', il recordset nobn muore non appena cambio pagina?
Come faccio a riprenderlo???


Come faccio a riprenderlo???
Un Recordset non e' altro che un ammasso di dati nella memoria del
computer, basta salvare questo "ammssso di dati" ed il recordset
e' preservato. Certo, quando la pagina viene chiusa la versione
"viva" del Recordset viene distrutta, ma la versione "congelata"
rimane...
Set rs = conn.Execute("SELECT bla bla")
... faccio qualche cosa con il recordset...
' salvo il recordset
Set Session("Recordset") = rs
Nelle pagine successive fai
If Session("Recordset") = "" Then
	' niente recordset... riparto daccapo
	Set rs = conn.Execute("SELECT....")
Else
	' trovato. ripiglio quello vecchio
	Set rs = Session("Recordset")
End If
Un altra soluzione e' quella di usare Recordset.Save per salvare
l'intero recordset in un file e poi Recordset.Open per
recuperare i dati successivamente.
Vedi 
http://www.soft-land.org/documenti/adomod_res.html#save
per dettagli su questo.
Davide

 rimane...
Ci sono limitazioni (oltre al timeout) per l'utilizzo di questa metodologia
... o meglio ... c'è un limite fisico di caratteri che possono essere
memorizzati in una variabile di tipo Session? ho provato a sfogliare la
guida in linea di M$ Visual InterDev senza trovare questa risposta (o magari
non l'ho neanche vista).
Grazie.
Michele Mariotti

memorizzati in una variabile di tipo Session?
No. L'unica cosa e' ricordarsi di fare un po' di pulizia alla scadenza
della sessione :
If Session("Recordset") <> "" Then
	Session("Recordset").Close
	Set Session("Recordset") = Nothing
End If
Altrimenti rischi di avere dei memory leak paurosi e mettere in
ginocchio il server...
Davide


Ciao Davide, io devo effettuare la paginazione di un recordset creato da una
base dati abbastanza grande, quindi per non effettuare ogni volta la query
quando mi sposto tra le pagine, devo conservarmi il recordeset, giusto?
Ora al fine di stressare il meno possibile il server, mi conviene conservare
il rs nella session o applicare il metodo save?
Grazie
Luca.

il rs nella session o applicare il metodo save?
Entrambi i metodi vanno bene. Il metodo "save" ti evita di tenere in
memoria il Recordset, quindi non hai la necessita' di richiamare delle
Close durante la Session_OnEnd, pero' rischi di avere un numero di 
file-spazzatura sul server, quindi dovrai pulirli, inoltre devi
gestirti il nome del file come "file temporaneo", quindi hai una
complicazione in piu'.
Dipende anche da quante volte fai il giochetto...
Potresti fare qualche prova e vedere cosa ti conviene di piu'.
Davide

>quando mi sposto tra le pagine, devo conservarmi il recordeset, giusto?
Dai un'occhiata alle proprieta' PageSize, PageCount e AbsolutePage del
recordset. Dovrebbero fare al tuo scopo. Non io ma un mio collega ha
utilizzato questo metodo per risolvere un problema analogo.
Antonio


Moderatore di it.comp.www.asp
Sito di supporto: 
http://www.aspitalia.com/newsgroup/icwa.asp
Tutto su WindowsNT? Su 
http://www.aspitalia.com
Professional WAP, per te su 
http://www.aspitalia.com/store/
Impara l'e-conomy su 
http://www.e-conomy.it


Il metodo rs.save e' quello che fa' per me, non occupa ram e tiene il
recordset!
Unico problema e' se il file gia' esiste...
Come posso fare?
ho provato un rs.close ("path" & nomefile)
Ma da' subito errore :P


contemporanei...
Ciao Daniele
quindi nel mio caso, cioè nella paginazione di un recordset di un enorme
quantità di dati, mi sconsigli vivissimamente di salvare lo stesso rs in una
session?
Se la risposta è si puoi dare un attimo una sbirciatina al mio msg
precedente e darmi un consiglio su come organizzarmi?
Ti ringrazio per l'eventuale consiglio.
Grazie.
Luca.