asp - asp.net - aspcode.it

COMMUNITY - Login
 Username:
 
 Password:
 
Voglio registrarmi!
Password dimenticata?
 Utenti on-line: 0
 Ospiti on-line: 7854
ASPCode.it - Store

  > > Tips

Un modo pratico per visualizzare recordset
di Maurizio Ferrera

Data di pubblicazione: 03/03/2003        Voto della community: 4,08 (Votanti: 4)

Spesso, durante lo sviluppo o il debug di una applicazione, abbiamo la necessità di verificare il risultato (recordset) di una query. Normalmente scriveremmo alcune righe di codice ad hoc; nel migliore dei casi dobbiamo riadattare una parte di codice già scritto, al caso in questione. Vediamo invece come creare una soluzione flessibile, che non dovremo riadattare volta per volta al recordset da visualizzare.
La parte di codice che crea il recordset assomiglierà probabilmente a questa:

<%
Set conn = server.createobject ("ADODB.Connection")
conn.Provider = "Microsoft.Jet.OLEDB.4.0"
conn.Open "Data Source=d:/aspcode/miodb.mdb"

Set rs = Server.createobject("ADODB.Recordset") 
sql = "SELECT * FROM miatabella"
rs.open sql,conn

.....
.....
.....

rs.close
set rs=nothing
conn.close
set conn=nothing

%>

Per visualizzare il recordset (rs nell'esempio) aggiungiamo al nostro codice la procedura che segue:

<%Sub showrecordset (rsToShow)%>

<div style="position:absolute; Z-INDEX: 99; top:0px; left:0px; background-color:silver; width:100%">
<table width="100%" border=1 cellspacing=0 >

  <tr>

<%for rip = 0 to rsToShow.fields.count-1%>
    <td align=center><font size=1><%=rsToShow.fields(rip).name%></font></td>
<%next%>

  </tr>

<%
do while not rsToShow.eof
%>

  <tr>

  <%for rip = 0 to rsToShow.fields.count-1%>
    <td align=right><font size=1><%=rsToShow.fields(rip).value%></font></td>
  <%next%>

  </tr>

<%
    rsToShow.movenext
loop
if not rsToShow.bof then rsToShow.movefirst
%> 

</table>
</div>

<%End sub%>

e chiamiamola con

Call ShowRecordset (rs)

L'unico parametro richiesto dalla procedura come si vede è il recordset da visualizzare (l'istruzione precedente va quindi inserita nell'esempio prima di rs.close). Per riferirci ai vari campi di un determinato record infatti ci serviamo nella procedura della notazione:
nomeRecordset.fields(numero)
anziché della più conosciuta notazione:
nomeRecordset.fields("nomecampo")
dove il numero tra parentesi rappresenta la posizione del campo all'interno del record (che dipende dall'ordine dei campi nella struttura del database o dall'ordine in cui questi figurano nella SELECT se ne stiamo selezionando solo alcuni). In questo modo possiamo leggere il valore dei vari campi di un certo record con:
nomeRecordset.fields(numero).value
incrementando con for..next il numero tra parentesi; in maniera analoga, il nome dei vari campi (che visualizziamo nella prima riga della tabella) è ricavato dalla proprietà:
nomeRecordset.fields(numero).name
Il numero totale dei campi del record (che ci serve per ricavare il limite superiore per la variabile usata in for..next) viene invece ricavato tramite la proprietà count della collezione dei campi, cioé nomeRecordset.fields.count.

Dopo aver visualizzato i record dalla posizione corrente fino alla fine, riportiamo con movefirst il cursore sul primo record in maniera che lo script che ha chiamato la procedura possa riprendere da quella posizione.

Notiamo infine l'accorgimento:
<div style="position:absolute; Z-INDEX: 99; top:0px; left:0px; background-color:silver; width:100%">
che crea un layer con posizionamento assoluto (in alto a sinistra della finestra del browser) contente la tabella in modo che gli eventuali tag html aperti prima della chiamata della procedura non ne alterino la visualizzazione.




Utenti connessi: 7854