Visualizzazione dei risultati da 1 a 4 su 4

Discussione: PROBLEMA PAGINAZIONE

  1. #1
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427

    PROBLEMA PAGINAZIONE

    Ho questo codice:

    ' apro prima query
    set rec1 etc
    sql="query1"

    rec1.PageSize = RecordsPerPagina
    rec1.AbsolutePage = page

    If rec1.Eof=True or rec1.Bof=True then
    Response.Write "

    Nessun risultato trovato</P>"
    Else

    For i=1 to RecordsPerPagina
    if Not rec1.EOF then

    'apro seconda query
    set rec2
    sql = "query2"

    'apro terza query
    set rec3
    sql = "query3"

    'ottengo un valore basato sulla prima query che mi filtra
    'ulteriormente i risultati con la differenza di due valori ottenuti
    'dalla 2a e 3a query

    dispreale=rec2("posti")-rec3("tot")
    if dispreale >0 then

    'mostro record
    <%
    rec1.MoveNext
    end if
    Next
    ' faccio pulizia.

    crea barra di paginazione

    Response.write "<font color='#FF6600' face='Verdana' size='2'>"
    Response.Write "

    Pagine:</font>"
    For pag=1 to rec1.PageCount
    Response.Write ""
    Response.Write "<A href='"&istring&"?page=" & pag
    Response.Write "&ricerca=" & Server.UrlEncode(strRicerca)
    Response.Write "&view=" & "last"
    Response.write "'>"
    Response.write "<font size=2 color=#ff6600>"
    Response.Write pag
    Response.Write "</A> "
    Next
    Response.Write ">>"
    Response.Write "
    "
    Response.Write "</P>"
    Response.Write "</font>"

    il problema è lampante....
    ottengo un barra di paginazione 1,2,3
    calcolata sui record trovati dalla prima query rec1.
    quindi è chiaro che avrò una barra che mi indica 3 pagine quando il filtro dispreale mi ha trovato solo 1 record.

    come posso ottenere il totale dei record:
    rec1.AbsolutePage = page
    dai record filtrati con le query1 e query2???

    Bella domanda lo so... che mi prenderete per scemo .
    ciao e grazie.

  2. #2
    SOLUZIONE DIRETTA:
    fai una join fra le tre tabelle...
    la tabella 1 ti restituisce i valori con cui JOINARE le altre due...
    dalle altre due imposti un WHERE in cui la somma dei due record sia maggiore di zero.

    ti ho fatto un esempio (ma sei stato vago, quindi non pretendere troppo)

    codice:
    SELECT tba_uno.uno_id, tba_due.due_text, tba_tre.tre_text, tba_uno.uno_val, tba_due.due_dispreale
    FROM (tba_uno LEFT JOIN tba_due ON tba_uno.uno_joiner = tba_due.due_joiner) LEFT JOIN tba_tre ON tba_uno.uno_joiner = tba_tre.tre_joiner
    WHERE (((tba_uno.uno_val)=3) AND ((tba_due.due_dispreale-tba_tre.tre_dispreale)>0));
    3 tabelle (uno, due, tre)
    dalla prima prendiamo i record con UNO_VAL = 3, poi dalla seconda e terza prendiamo i record che hanno DUE_JOINER, TRE_JOINER uguali a UNO_JOINER (valori corrispondenti)...
    e poi prendiamo solo i record che hanno la famosa sottrazione DISPREALE maggiore di 0...

    se la ricostruisci sulla TUA struttura ti fa funzionare (con una sola QUERY e il solito sistema di paginazione) tutta la baracca...

    SOLUZIONE INDIRETTA:
    mi spieghi il problema di fondo senza farmi vedere nemmeno una linea di codice.
    magari troviamo una soluzione più elegante...
    san imente saluta

    * http://simonecingano.it *

  3. #3
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    posso mandartela in privato ti dispiace ?

  4. #4
    non v'è problema...

    imente at email dot it
    san imente saluta

    * http://simonecingano.it *

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.