Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    57

    Paginazione query dinamica non funziona

    Ciao a tutti.
    Devo fare la paginazione di una query dinamica. Ho scaricato l'esempio di Roby di www.creamweb.it, l'ho adattato al mio DB, funziona ed è un vero gioiello!
    Il problema è che la mia query è dinamica -un interogazzione-, l'utente in una pagina anteriore sceglie la Categoria di prodotto che vuole vedere, e devi così arrivare il listino con la paginazione detta.

    Eccoci il codice con query statica (funziona):
    strSQL = "SELECT * FROM QProdotti WHERE IdCategoria=1"

    Eccoci il codice dell'interrogazione che non funziona:
    strSQL = "SELECT * FROM QProdotti WHERE IdCategoria=?"

    I browser dicono:
    "Tipo di errore:
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
    [Microsoft][Driver ODBC Microsoft Access]Campo COUNT non corretto.
    /default1.asp, line 34"

    '******da errore in questa linea (34)***********************
    objRS.Open strSQL, objConn, adOpenStatic, adLockReadOnly, adCmdText
    '******fine linea errore************************

    Eccoci tutto il codice utilizzato.
    ******************
    <%@ Language=VBScript %>
    <% response.buffer=true %>
    <% Server.ScriptTimeout = 300 %>


    <html>
    <head>
    <title>Creamweb.it - Paginazione</title>
    </head>
    <BODY MARGINWIDTH="0" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="0" bgcolor="white">
    <TABLE WIDTH="500" CELLPADDING="0" CELLSPACING="0" BORDER="0" align="center">
    <TR height="60" valign="middle">
    <TD align="center">
    <font face="verdana" size="3" color="red">Paginazione dei risultati di una query</font>
    </TD>
    <TR>
    <TD>
    <%
    iPageSize = 10 'NUMERO RECORD PER PAGINA

    If Request.QueryString("page") = "" Then
    iPageCurrent = 1
    Else
    iPageCurrent = CInt(Request.QueryString("page"))
    End If
    ID = Request.QueryString("id")
    strSQL = "SELECT * FROM QProdotti WHERE IdCategoria=?"
    Set objRS = Server.CreateObject("ADODB.Recordset")
    objRS.PageSize = iPageSize
    objRS.CacheSize = iPageSize
    '******da errore in questa linea***********************
    objRS.Open strSQL, objConn, adOpenStatic, adLockReadOnly, adCmdText
    '******fine linea errore************************
    reccount = objRS.recordcount
    iPageCount = objRS.PageCount

    If iPageCurrent > iPageCount Then iPageCurrent = iPageCount
    If iPageCurrent < 1 Then iPageCurrent = 1

    If iPageCount = 0 Then
    Response.Write "

    <table><td><font face='verdana' size='2' color='#000000'>Non sono stati trovati prodotti.</td></table></p>"
    Else
    objRS.AbsolutePage = iPageCurrent
    iRecordsShown = 0
    %>
    <table cellpadding="0" cellspacing="0" border="0" width="95%">
    <tr>
    <td bgcolor="#cccccc">
    <table cellpadding="2" cellspacing="1" border="0" width="100%">
    <tr height="22">
    <td bgcolor="#dddddd" WIDTH="6%"><font face="verdana" size="2" color="#000000">N.</font></td>
    <td bgcolor="#dddddd" WIDTH="29%"><font face="verdana" size="2" color="#000000">Nome</font></td>
    <td bgcolor="#dddddd" WIDTH="4%" align="center"><font face="verdana" size="2" color="#000000">Foto1</font></td>
    <td bgcolor="#dddddd" WIDTH="11%" align="center"><font face="verdana" size="2" color="#000000">Marchio</font></td>
    </tr>
    <%
    'SI VISUALIZZA IL CONTENUTO DELLA STRINGA SQL
    'ALL'INTERNO DELLA TABELLA PRIMA DEFINITA
    cont=1
    Do While iRecordsShown < iPageSize And Not objRS.EOF
    Dim Rig, bg
    Rig = Rig + 1
    If Rig Mod 2 = 0 then
    bg = "#E4E4E4"
    Else
    bg = "#ccccff"
    End if
    Response.Write "<tr bgcolor = " & bg & "><td><font color='#000000' face='Verdana' size='1'>" & (iPageSize*iPageCurrent)-iPageSize+Cont & "</font></td>"
    Response.Write "<td><font color='#000000' face='Verdana' size='1'>" & objRS("Nome") & "</font></td>"
    Response.Write "<td align='center'><font color='#000000' face='Verdana' size='1'>" & objRS("Foto1") & "</font></td>"
    Response.Write "<td align='center'><font color='#000000' face='Verdana' size='1'>" & objRS("IdMarchio") & "</font></td>"
    Cont = Cont + 1
    'POSIZIONAMENTO ALLA RIGA SUCCESSIVA DEL DB
    iRecordsShown = iRecordsShown + 1
    objRS.MoveNext
    Loop
    'PULIZIA DEGLI OGGETTI ADO
    objRS.Close
    Set objRS = Nothing
    %>
    </table>
    </td>
    </tr>
    </table>
    <%End if%>



    <%If ipagecount <> 1 Then%>
    <center>
    <table>
    <tr valign="middle">
    <td width="50%" align="center" valign="middle"><font face="verdana" size="1" color="#000000">
    [
    <%if iPageCurrent-2 > 0 and iPageCurrent > 2 then%>
    [img]images/first.gif[/img]
    <%end if%>
    <%if iPageCurrent > 1 then%>
    [img]images/pre.gif[/img]
    <%end if%>
    <%if iPageCount > 2 then
    if iPageCurrent-2 < 1 then da_pag = 1 else da_pag = iPageCurrent-2
    if iPageCurrent+2 > iPageCount then fino_a_pag = iPageCount else fino_a_pag = iPageCurrent+2
    else
    da_pag = 1
    fino_a_pag = iPageCount
    end if%>
    <%for i = da_pag to fino_a_pag%>
    <%if i = iPageCurrent then%>
    <font color="red"><%=i%></font>
    <%else%>
    <%=i%>
    <%end if%>
    <%next%>
    <%if iPageCurrent > 0 and iPageCurrent < iPageCount then%>
    [img]images/next.gif[/img]
    <%end if%>
    <%if iPageCurrent+1 < iPageCount then%>
    [img]images/last.gif[/img]
    <%end if%>
    ]

    </font></td>
    </tr>
    <tr>
    <td colspan="2" align="center"><font face="verdana" size="1" color="#000000">
    <center>
    Pagina
    <font color="#FF0000"><%=iPageCurrent%></font>
    di
    <font color="#FF0000"><%=iPageCount%></font>
    </center>
    </font></td>
    </tr>
    </table>
    </center>
    <%end if%>
    <%
    objConn.Close
    Set objConn = Nothing
    %>
    </TD>
    </TR>
    </TABLE>
    </body>
    </html>
    ***********************
    Sono nuova in ASP e non riesco con questo problema.
    Qualcuno mi potrebbe dare una mano?
    Grazie tanti
    Juana

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Quando l'utente nella pagina anteriore sceglie la categoria cosa succede?
    Clicca su un bottone di un form?
    Passi il parametro in querystring?

    Quello che ti manca è recuperare quel valore, una cosa di questo tipo per esempio:

    codice:
    IdCategoria = trim(request.querystring("IdCategoria "))
    Mettila all'inizio dello script della paginazione, prima di questa riga:

    codice:
    iPageSize = 10 'NUMERO RECORD PER PAGINA

    Roby

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    57

    Non va

    Ciao Roby, sei proprio tu, complimenti!

    Ho fatto come tu mi hai detto, non riesce però a recuperare il IdCategoria.
    ------------------------
    Se mantengo la query così:
    strSQL = "SELECT * FROM QProdotti WHERE IdCategoria=?"
    da lo stesso errore di prima
    "Tipo di errore:
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
    [Microsoft][Driver ODBC Microsoft Access]Campo COUNT non corretto. "
    --------------------------
    invece cosi:
    strSQL = "SELECT * FROM QProdotti WHERE IdCategoria"
    funziona OK ma prende tutti prodotti senza filtrare la Categoria
    ----------------------------
    L'utente sulla pagina anteriore clicca un menù + o - così:
    CARROZZINE
    PASSEGGINI
    SEGGIOLINI AUTO
    e così via.

    Se hai un altro suggerimento... Cmq continuo a provare per che possa leggere la Categoria.
    Grazie tanti. Juana

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    IdCategoria = trim(request.querystring("Id"))
    Roby

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    57

    Provato :jam:

    Ciao Roby, ho già provato quello
    con IdCategoria e anche con Id (scrivendo sempre la stessa cosa nella query, nel recupero e anche nella pagina di scelta)
    Penso che la query deve essere tutta insieme lla Categoria e la pagina.
    Chuuz. Grazie. Continuo a provare.
    Juana

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Rifammi vedere tutta la seconda pagina con le correzioni.

    Roby

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    57
    <%@ Language=VBScript %>
    <% response.buffer=true %>
    <% Server.ScriptTimeout = 300 %>


    <html>
    <head>
    <title>Creamweb.it - Paginazione</title>
    </head>
    <BODY MARGINWIDTH="0" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="0" bgcolor="white">
    <TABLE WIDTH="500" CELLPADDING="0" CELLSPACING="0" BORDER="0" align="center">
    <TR height="60" valign="middle">
    <TD align="center">
    <font face="verdana" size="3" color="red">Paginazione dei risultati di una query</font>
    </TD>
    <TR>
    <TD>
    <%
    IdCategoria = trim(request.querystring("Id"))
    iPageSize = 10 'NUMERO RECORD PER PAGINA

    If Request.QueryString("page") = "" Then
    iPageCurrent = 1
    Else
    iPageCurrent = CInt(Request.QueryString("page"))
    End If

    ID = Request.QueryString("id")
    strSQL = "SELECT * FROM QProdotti WHERE IdCategoria=?"


    Set objRS = Server.CreateObject("ADODB.Recordset")
    objRS.PageSize = iPageSize
    objRS.CacheSize = iPageSize
    '******da errore in questa linea***********************
    objRS.Open strSQL, objConn, adOpenStatic, adLockReadOnly, adCmdText
    '******fine linea errore************************
    reccount = objRS.recordcount
    iPageCount = objRS.PageCount

    If iPageCurrent > iPageCount Then iPageCurrent = iPageCount
    If iPageCurrent < 1 Then iPageCurrent = 1

    If iPageCount = 0 Then
    Response.Write "

    <table><td><font face='verdana' size='2' color='#000000'>Non sono stati trovati prodotti.</td></table></p>"
    Else
    objRS.AbsolutePage = iPageCurrent
    iRecordsShown = 0
    %>
    <table cellpadding="0" cellspacing="0" border="0" width="95%">
    <tr>
    <td bgcolor="#cccccc">
    <table cellpadding="2" cellspacing="1" border="0" width="100%">
    <tr height="22">
    <td bgcolor="#dddddd" WIDTH="6%"><font face="verdana" size="2" color="#000000">N.</font></td>
    <td bgcolor="#dddddd" WIDTH="29%"><font face="verdana" size="2" color="#000000">Nome</font></td>
    <td bgcolor="#dddddd" WIDTH="4%" align="center"><font face="verdana" size="2" color="#000000">Foto1</font></td>
    <td bgcolor="#dddddd" WIDTH="11%" align="center"><font face="verdana" size="2" color="#000000">Marchio</font></td>
    </tr>
    <%
    'SI VISUALIZZA IL CONTENUTO DELLA STRINGA SQL
    'ALL'INTERNO DELLA TABELLA PRIMA DEFINITA
    cont=1
    Do While iRecordsShown < iPageSize And Not objRS.EOF
    Dim Rig, bg
    Rig = Rig + 1
    If Rig Mod 2 = 0 then
    bg = "#E4E4E4"
    Else
    bg = "#ccccff"
    End if
    Response.Write "<tr bgcolor = " & bg & "><td><font color='#000000' face='Verdana' size='1'>" & (iPageSize*iPageCurrent)-iPageSize+Cont & "</font></td>"
    Response.Write "<td><font color='#000000' face='Verdana' size='1'>" & objRS("Nome") & "</font></td>"
    Response.Write "<td align='center'><font color='#000000' face='Verdana' size='1'>" & objRS("Foto1") & "</font></td>"
    Response.Write "<td align='center'><font color='#000000' face='Verdana' size='1'>" & objRS("IdMarchio") & "</font></td>"
    Cont = Cont + 1
    'POSIZIONAMENTO ALLA RIGA SUCCESSIVA DEL DB
    iRecordsShown = iRecordsShown + 1
    objRS.MoveNext
    Loop
    'PULIZIA DEGLI OGGETTI ADO
    objRS.Close
    Set objRS = Nothing
    %>
    </table>
    </td>
    </tr>
    </table>
    <%End if%>



    <%If ipagecount <> 1 Then%>
    <center>
    <table>
    <tr valign="middle">
    <td width="50%" align="center" valign="middle"><font face="verdana" size="1" color="#000000">
    [
    <%if iPageCurrent-2 > 0 and iPageCurrent > 2 then%>
    [img]images/first.gif[/img]
    <%end if%>
    <%if iPageCurrent > 1 then%>
    [img]images/pre.gif[/img]
    <%end if%>
    <%if iPageCount > 2 then
    if iPageCurrent-2 < 1 then da_pag = 1 else da_pag = iPageCurrent-2
    if iPageCurrent+2 > iPageCount then fino_a_pag = iPageCount else fino_a_pag = iPageCurrent+2
    else
    da_pag = 1
    fino_a_pag = iPageCount
    end if%>
    <%for i = da_pag to fino_a_pag%>
    <%if i = iPageCurrent then%>
    <font color="red"><%=i%></font>
    <%else%>
    <%=i%>
    <%end if%>
    <%next%>
    <%if iPageCurrent > 0 and iPageCurrent < iPageCount then%>
    [img]images/next.gif[/img]
    <%end if%>
    <%if iPageCurrent+1 < iPageCount then%>
    [img]images/last.gif[/img]
    <%end if%>
    ]

    </font></td>
    </tr>
    <tr>
    <td colspan="2" align="center"><font face="verdana" size="1" color="#000000">
    <center>
    Pagina
    <font color="#FF0000"><%=iPageCurrent%></font>
    di
    <font color="#FF0000"><%=iPageCount%></font>
    </center>
    </font></td>
    </tr>
    </table>
    </center>
    <%end if%>
    <%
    objConn.Close
    Set objConn = Nothing
    %>
    </TD>
    </TR>
    </TABLE>
    </body>
    </html>
    /*--------------------------------
    Eccoci, è tutto uguale tranne la linea di sopra
    Grazie, Juana

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Ti avevo già detto come correggere:

    codice:
    strSQL = "SELECT * FROM QProdotti WHERE IdCategoria="& IdCategoria
    Inoltre nella paginazione devi aggiungere il nuovo parametro altrimenti lo perde.

    Roby

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.