paginazione record di una query

franciros

Nuovo Utente
29 Ott 2006
28
0
1
Ciao a tutti, il codice che segue mi dovrebbe paginare i record che vengono fuori da una query con le variabili che arrivano da un'altra pagina asp. Sta di fatto che la pagina iniziale è ok, ma se clicco per passare alla seconda mi da errore, come se perdesse le variabili:
Codice:
<%

    ' DEFINISCO LE VARIABILI CHE MI SERVONO PER L'APPLICAZIONE
    Dim sc, cn, rs, quanti, pag, contatore, uni, cstudio, clas, a_s, regio, prov, cfusom, sc_cfu, cfudett, ageo, tip_lau, notes

	cfudett=request.form("scelte_cfu") + request.form("cfudett")
	
	session("cfudett")=request.form("scelte_cfu") + request.form("cfudett")
	'response.Write(cfudett)
	
    ' DEFINISCO LA STRINGA DI CONNESSIONE
    sc = ""
    sc = sc & "driver={Microsoft Access Driver (*.mdb)};dbq="
    sc = sc & Server.MapPath("/stage/stage.mdb")

    ' IMPOSTO LA CONNESSIONE EDIL RECORDSET
    Set cn = Server.CreateObject("ADODB.Connection")
    Set rs = Server.CreateObject("ADODB.Recordset")

    ' APRO LA CONNESSIONE COL DATABASE
    cn.Open sc

    ' DEFINISCO IL NUMERO DI RECORD DA VISUALIZZARE PER OGNI PAGINA
    quanti = 20

    ' RECUPERO IL NUMERO DI PAGINA CORRENTE
    ' E CONTROLLO CHE NON SIA INFERIORE A 1
    pag = Request.QueryString("pag")
    If IsNumeric(pag) = False Or pag < 1 Then pag = 1

    ' IMPOSTO UN CONTATORE
    contatore = 0
%>

<style>a { color: blue; }</style>

<table width="95%" border="0" align="center" cellpadding="1">
<tr class="messaggio">
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
</tr>
<tr class="messaggio">
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
</tr>
</table>

<table width="95%" border="0" align="center" cellpadding="1" class="testi">
<%
    ' APRO IL RECORDSET
	'sql="SELECT univ,cors,cla,asnt,reg,prov,cfu,cfu_de,note,area,tipo FROM magt WHERE cfu_de " + session("cfudett") + " ORDER BY cfu_de ASC"
	'response.Write(sql)
	'rs.CursorLocation=3
    rs.Open sql, cn, 1
    ' EFFETTUO MATERIALMENTE LA PAGINAZIONE
    rs.PageSize = quanti
    rs.AbsolutePage = pag
    ' ESEGUO IL CICLO
    While rs.EOF = False And contatore < quanti
%>
    
    <tr align="left" valign="baseline" bgcolor="#FFFFCC" class="testi">
      <td width="5%"><%=rs("univ")%></td>
      <td width="8%"><%=rs("cors")%></td>
      <td width="8%"><%=rs("cla")%></td>
      <td width="5%"><%=rs("asnt")%></td>
      <td width="8%"><%=rs("reg")%></td>
      <td width="8%"><%=rs("prov")%></td>
      <td width="24%"><%=rs("cfu")%></td>
      <td width="8%"><%=rs("cfu_de")%></td>
      <td width="5%"><%=rs("note")%></td>
      <td width="8%"><%=rs("area")%></td>
      <td width="8%"><%=rs("tipo")%></td>
  </tr>
<%
        rs.MoveNext
        ' INCREMENTO IL VALORE DEL CONTATORE
        contatore = contatore + 1
    Wend
%>
</table>
<p align="center">
<%If pag > 1 Then%>
    <a href="result.asp?pag=<%=pag-1%>">Indietro</a>
<%End If%>
<%
    Dim x
    x = 1
    For x = 1 To rs.PageCount
        If CInt(pag) <> x Then
%>
            [<a href="result.asp?pag=<%=x%>"><%=x%></a>]
<%
        Else
%>
            [<a href="result.asp?pag=<%=x%>"><b><%=x%></b></a>]
<%
        End If
    Next
%>
<%If rs.EOF = False Then%>
    <a href="result.asp?pag=<%=pag+1%>">Avanti</a>
<%End If%>
</p>
</body>
</html>
<%
    ' UN PO DI PULIZIA...
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
%>

grazie mille

F
 
In pratica non passi nell'url le variabili...
Codice:
    <%

        ' DEFINISCO LE VARIABILI CHE MI SERVONO PER L'APPLICAZIONE
        Dim sc, cn, rs, quanti, pag, contatore, uni, cstudio, clas, a_s, regio, prov, cfusom, sc_cfu, cfudett, ageo, tip_lau, notes


If request.form("scelte_cfu") <> "" AND request.form("cfudett") <> "" Then

    	cfudett=request.form("scelte_cfu") + request.form("cfudett")
    	
    	session("cfudett")=request.form("scelte_cfu") + request.form("cfudett")
    	'response.Write(cfudett)

Else

		cfudett = request("scelte_abc")
		session("cfudett")  = request("scelte_abc")
		
End If
    	
        ' DEFINISCO LA STRINGA DI CONNESSIONE
        sc = ""
        sc = sc & "driver={Microsoft Access Driver (*.mdb)};dbq="
        sc = sc & Server.MapPath("/stage/stage.mdb")

        ' IMPOSTO LA CONNESSIONE EDIL RECORDSET
        Set cn = Server.CreateObject("ADODB.Connection")
        Set rs = Server.CreateObject("ADODB.Recordset")

        ' APRO LA CONNESSIONE COL DATABASE
        cn.Open sc

        ' DEFINISCO IL NUMERO DI RECORD DA VISUALIZZARE PER OGNI PAGINA
        quanti = 20

        ' RECUPERO IL NUMERO DI PAGINA CORRENTE
        ' E CONTROLLO CHE NON SIA INFERIORE A 1
        pag = Request.QueryString("pag")
        If IsNumeric(pag) = False Or pag < 1 Then pag = 1

        ' IMPOSTO UN CONTATORE
        contatore = 0
    %>

    <style>a { color: blue; }</style>

    <table width="95%" border="0" align="center" cellpadding="1">
    <tr class="messaggio">
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr class="messaggio">
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    </table>

    <table width="95%" border="0" align="center" cellpadding="1" class="testi">
    <%
        ' APRO IL RECORDSET
    	'sql="SELECT univ,cors,cla,asnt,reg,prov,cfu,cfu_de,note,area,tipo FROM magt WHERE cfu_de " + session("cfudett") + " ORDER BY cfu_de ASC"
    	'response.Write(sql)
    	'rs.CursorLocation=3
        rs.Open sql, cn, 1
        ' EFFETTUO MATERIALMENTE LA PAGINAZIONE
        rs.PageSize = quanti
        rs.AbsolutePage = pag
        ' ESEGUO IL CICLO
        While rs.EOF = False And contatore < quanti
    %>
        
        <tr align="left" valign="baseline" bgcolor="#FFFFCC" class="testi">
          <td width="5%"><%=rs("univ")%></td>
          <td width="8%"><%=rs("cors")%></td>
          <td width="8%"><%=rs("cla")%></td>
          <td width="5%"><%=rs("asnt")%></td>
          <td width="8%"><%=rs("reg")%></td>
          <td width="8%"><%=rs("prov")%></td>
          <td width="24%"><%=rs("cfu")%></td>
          <td width="8%"><%=rs("cfu_de")%></td>
          <td width="5%"><%=rs("note")%></td>
          <td width="8%"><%=rs("area")%></td>
          <td width="8%"><%=rs("tipo")%></td>
      </tr>
    <%
            rs.MoveNext
            ' INCREMENTO IL VALORE DEL CONTATORE
            contatore = contatore + 1
        Wend
    %>
    </table>
    <p align="center">
    <%If pag > 1 Then%>
        <a href="result.asp?pag=<%=pag-1%>">Indietro</a>
    <%End If%>
    <%
        Dim x
        x = 1
        For x = 1 To rs.PageCount
            If CInt(pag) <> x Then
    %>
                [<a href="result.asp?pag=<%=x%>&scelte_abc=<%=session("cfudett")%>"><%=x%></a>]
    <%
            Else
    %>
                [<a href="result.asp?pag=<%=x%>&scelte_abc=<%=session("cfudett")%>"><b><%=x%></b></a>]
    <%
            End If
        Next
    %>
    <%If rs.EOF = False Then%>
        <a href="result.asp?pag=<%=pag+1%>&scelte_abc=<%=session("cfudett")%>">Avanti</a>
    <%End If%>
    </p>
    </body>
    </html>
    <%
        ' UN PO DI PULIZIA...
        rs.Close
        Set rs = Nothing
        cn.Close
        Set cn = Nothing
    %>

...prova una cosa del genere
 
In pratica non passi nell'url le variabili...

un'altra cosa, scusami...ma ovemai si dovessero incrociare più dati per effettuare questa ricerca quindi variabili <> oppure = a null, c'è bisogno di una miriade di incroci di condizioni, dico bene oppure esiste una strada più semplice?

grazie

F
 
un'altra cosa, scusami...ma ovemai si dovessero incrociare più dati per effettuare questa ricerca quindi variabili <> oppure = a null, c'è bisogno di una miriade di incroci di condizioni, dico bene oppure esiste una strada più semplice?

...si, a meno che non salvi le informazioni sui cookie anziché riportarle nell'url ma se per il browser non sono abilitati, il programma non ti funziona.

Paolo
 
potrebbe essere un'idea....mi stai dicendo che questo mi eviterebbe moltiplicare le query incrociate per campi vuoti o pieni a seconda dei casi?
 

Discussioni simili