Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Paginazione recuperare id da lista record

    Ho una paginazione di record, per esempio decido di stampare a monitor 5 record per pagina.
    Nella stessa pagina visualizzo anche altri dati relativi a solo uno di questi cinque record.
    E specifico l'id di quest'ultimo passandolo come querystring.
    Sfogliando le pagine però, vorrei ogni volta recuperare l'id che corrisponde al primo record della lista, in modo da aggiornare oltre alla lista anche il record visualizzato per esteso.

    Non posso fare id corrente +5 perchè un record può essere cancellato o escluso perchè corrispondente ad altra categoria.

    Come fate voi a recuperare l'id che in ogni 'pagina' corrisponde al primo record?
    Al momento in testa ho un grande vuoto :master:
    grazie

  2. #2
    codice:
    
    'impagino il recordset
    
    rs.absolutePage = page 'sposto il recordset alla pagina corrente
    
    
    'recupero il primo id
    
    dim firstId
    firstId = 0
    if not rs.eof then
    firstId = rs("id)
    rs.movefirst
    end if
    
    'continuo nella vita...
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Ciao e grazie
    ho provato ad implementare la variabile come da codice che hai postato ma temo di trovarmi in una situazione + complicata.

    Ho una paginazione di questo tipo:

    < ind 1 2 3 4 5 av>

    ammettiamo che il primo record corrispondente alla pagina 1 si quattro, riesco effettivamente a recuperarlo e a passarlo; il problema è che il valore '4' rimane lo stesso anche per le pagine successive, cosa che ovviamente non può essere.

    Sicuramente sbagliando ho fatto così:



    codice:
    <%
    
    dim firstId
    firstId = 0
    if not rs.eof then
    firstId = rs("id")
    rs.movefirst
    end if
    
    if totalRecs > 0 then
    If  startRec = 1 Then
    isPrev = False
    Else
    isPrev = True
    PrevStart = startRec - displayRecs
    If PrevStart < 1 Then PrevStart = 1 %> 
    [/COLOR]&amp;start=<%=PrevStart%>&amp;cat=<%=cat%>">&lt;
    <%
    End If
    If (isPrev OR (NOT rs.EOF)) Then
    If (NOT isPrev) Then Response.Write ""
    x = 1
    y = 1
    dx1 = ((startRec-1)\(displayRecs*recRange))*displayRecs*recRange+1
    dy1 = ((startRec-1)\(displayRecs*recRange))*recRange+1
    If (dx1+displayRecs*recRange-1) > totalRecs then
    dx2 = (totalRecs\displayRecs)*displayRecs+1
    dy2 = (totalRecs\displayRecs)+1
    Else
    dx2 = dx1+displayRecs*recRange-1
    dy2 = dy1+recRange-1
    End If
     
    While x <= totalrecs
    If x >= dx1 and x <= dx2 Then
    If Clng(startRec) = Clng(x) Then %> <span><%=y%></span> <% Else %> 
    [/COLOR]&amp;start=<%=x%>&amp;cat=<%=cat%>"><%=y%> <%   End If
    x = x + displayRecs
    y = y + 1
    elseif x >= (dx1-displayRecs*recRange) and x <= (dx2+displayRecs*recRange) then
    if x+recRange*displayRecs < totalRecs then %>
    [/COLOR]&amp;start=<%=x%>&amp;cat=<%=cat%>"><%=y%> <%   else
    ny=(totalRecs-1)\displayRecs+1
    if ny = y then %> 
    [/COLOR]&amp;start=<%=x%>&amp;cat=<%=cat%>"><%=y%><% else %>
    [/COLOR]&amp;start=<%=x%>&amp;cat=<%=cat%>"><%=y%><% end if
    end if
    x=x+recRange*displayRecs
    y=y+recRange
    else
    x=x+recRange*displayRecs
    y=y+recRange
    End If
    Wend
    End If
    If NOT rs.EOF Then
    NextStart = startRec + displayRecs
    isMore = True %> 
    [/COLOR]&amp;start=<%=NextStart%>&amp;cat=<%=cat%>">&gt;<% Else
    isMore = False
    End If %><% Else %>
    <div>[img]images/grafica/textimg/no_articolo.png[/img]</div>
    <% End If %>
    <% rs.Close
    Set rs = Nothing
    conn.Close
    Set conn = Nothing %>
    :master:

  4. #4
    Ho fatto un passo avanti ottenendo un parziale risultato:

    codice:
    <%
    if clng(startRec) > clng(totalRecs) then
    startRec = totalRecs
    end if
    stopRec = startRec + displayRecs - 1
    recCount = startRec - 1
    if not rs.eof then
    
    dim firstId
    firstId = 0
    if not rs.eof then
    firstId = rs("id")
    end if
    rs.movefirst
    
    rs.move startRec - 1
    end if
    recActual = 0
    Do While (NOT rs.EOF) AND (recCount < stopRec)
    recCount = recCount + 1
    If Clng(recCount) >= Clng(startRec) Then 
    recActual = recActual + 1 
    %>
    
    <%
    if totalRecs > 0 then
    If  startRec = 1 Then
    isPrev = False
    Else
    isPrev = True
    PrevStart = startRec - displayRecs
    If PrevStart < 1 Then PrevStart = 1 %> 
    [/COLOR]&amp;start=<%=PrevStart%>&amp;cat=<%=cat%>">&lt;
    <%
    End If
    If (isPrev OR (NOT rs.EOF)) Then
    If (NOT isPrev) Then Response.Write ""
    x = 1
    y = 1
    dx1 = ((startRec-1)\(displayRecs*recRange))*displayRecs*recRange+1
    dy1 = ((startRec-1)\(displayRecs*recRange))*recRange+1
    If (dx1+displayRecs*recRange-1) > totalRecs then
    dx2 = (totalRecs\displayRecs)*displayRecs+1
    dy2 = (totalRecs\displayRecs)+1
    Else
    dx2 = dx1+displayRecs*recRange-1
    dy2 = dy1+recRange-1
    End If
     
    While x <= totalrecs
    If x >= dx1 and x <= dx2 Then
    If Clng(startRec) = Clng(x) Then %> <span><%=y%></span> <% Else %> 
    [/COLOR]&amp;start=<%=x%>&amp;cat=<%=cat%>"><%=y%> <%   End If
    x = x + displayRecs
    y = y + 1
    elseif x >= (dx1-displayRecs*recRange) and x <= (dx2+displayRecs*recRange) then
    if x+recRange*displayRecs < totalRecs then %>
    [/COLOR]&amp;start=<%=x%>&amp;cat=<%=cat%>"><%=y%> <%   else
    ny=(totalRecs-1)\displayRecs+1
    if ny = y then %> 
    [/COLOR]&amp;start=<%=x%>&amp;cat=<%=cat%>"><%=y%><% else %>
    [/COLOR]&amp;start=<%=x%>&amp;cat=<%=cat%>"><%=y%><% end if
    end if
    x=x+recRange*displayRecs
    y=y+recRange
    else
    x=x+recRange*displayRecs
    y=y+recRange
    End If
    Wend
    End If
    If NOT rs.EOF Then
    NextStart = startRec + displayRecs
    isMore = True %> 
    [/COLOR]&amp;start=<%=NextStart%>&amp;cat=<%=cat%>">&gt;<% Else
    isMore = False
    End If %><% Else %>
    <div>[img]images/grafica/textimg/no_articolo.png[/img]</div>
    <% End If %>
    <% rs.Close
    Set rs = Nothing
    conn.Close
    Set conn = Nothing %>
    Riesco così ad assegnare il primo id di ciascuna pagina al parametro key però il ciclo non si chiude correttamente; l'ultima pagina produce un errore:

    ADODB.Field error '80020009'

    Il record corrente corrisponde all'inizio o alla fine del file oppure è stato eliminato. Per eseguire l'operazione richiesta è necessario disporre di un record corrente.

    /newsletter.asp, riga 0

    non capisco l'errore :master: chi mi aiuta è un santo!

  5. #5
    ma che tecnica usi per impaginare?

    ora non mi va di riprendere il mio codice, cmq dovrebbe essere così:

    codice:
    dim page
    page = 1
    dim pageSize 'record per page
    pageSize = 20
    
    set conn = ..
    set rs = server.createObject("adodb.recordset")
    rs.Open "select * from tabella",conn,1,3
    
    rs.pageSize = pageSize
    rs.AbsolutePage = page
    
    while not rs.eof
    'print record di pagina page
    rs.movenext
    wend
    riscrivi il tuo codice o cerca "paginazione" nel forum
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Magari sapessi scrivermi da solo il codice per una paginazione
    purtroppo devo fare i puzzle, prendere pezzi di codice già scritto e cercare di adattarli alle mie esigenze.
    Nel mio caso, sto costruendo un sito dove viene caricato il contenuto di un record che passo tramite key (cioè id) e nella stessa pagina un elenco di altri contenuti con paginazione.
    Vedi qui la bozza di una pagina alla quale sto lavorando. Scorri in basso per vedere la paginazione.

    Posso passare via querystring la key, quindi 'paginando' ricarico sempre l'articolo iniziale.
    Fin qui no problem.
    Vorrei però ricaricare, scorrendo le pagine, l'articolo corrispondente al primo dell'elenco in paginazione.
    Prima di pensare che c'è da rivedere tutto il codice...vedo se esiste qualche trucchetto per ottenere il risultato desiderato

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 © 2026 vBulletin Solutions, Inc. All rights reserved.