Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135

    Problema con codice asp paginazione

    Ciao a tutti; sto cercando di far funzionare la paginazione dei dati restituiti da una query, ma non ci riesco.

    Questo è il codice asp:
    codice:
    ' Creo le istanze opportune degli oggetti necessari
    SET objRS1 = Server.CreateObject("ADODB.RecordSet")
    SET objRS2 = Server.CreateObject("ADODB.RecordSet")
     
    strSQL = "SELECT DISTINCT nome_utente, operazione FROM tabella;"
    objRS1.Open strSQL, cn, 1, 3
     
    ' Ciclo il resultset per interrogare la subquery (la seconda select)
    
    pgCorr = Request.QueryString("pgVis")
    IF pgCorr = "" THEN   
      pgCorr = 1
    END IF
     
    ' numero di record per pagina
    objRS2.PageSize = 50
     
    Do While Not objRS1.EOF AND numRiga < objRS2.PageSize
     
    	strSQL = "SELECT TOP 1 * FROM tabella WHERE nome_utente = '" &_
    	objRS1("nome_utente") & "' and operazione = '" & objRS1("operazione") & "' ORDER BY ID DESC;"
    	objRS2.Open strSQL, cn, 1, 3
    	
    	objRS2.AbsolutePage = pgCorr
    	
    ' codice di utilizzo dei dati estratti
    	
    response.write objRS2("nome_utente") & "
    "
    response.write objRS2("operazione") & "
    
    "
     
        numRiga = numRiga + 1
        objRS1.MoveNext
    	
    LOOP
     
    ' Creo la barra di navigazione nelle pagine del resultset
    Response.Write "<P align='center'>Vai a pagina"
     
    ' Creo un Ciclo per visualizzare i link alle pagine in coda
    FOR i = 1 TO objRS2.PageCount
     
    ' Verifico che il link non faccia riferimento alla pagina corrente
    IF i <> CInt(pgCorr) THEN
          Response.Write "" & i & "|"
       ELSE
          Response.Write i & "|"
       END IF
    NEXT
    
    objRS2.Close
    objRS1.Close
      
    SET objRS2 = Nothing
    SET objRS1 = Nothing
    							
    cn.Close
    Set cn = Nothing
    L'errore restituito è:
    ADODB.Recordset error '800a0e79'

    Operation is not allowed when the object is open.

    /estrazione.asp, line 54
    Dove line 54 è la seguente
    codice:
    objRS2.Open strSQL, cn, 1, 3
    Dove sbaglio ?
    Grazie
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Apri il recordsetr dentro al loop (ciclandolo n volte) mentre lo chiudi solo fuori...
    Quindi cerchi di aprirlo sempre ma non lo chiudi mai...

    Roby

  3. #3
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Grazie Roby, ho modificato così:
    codice:
    ' Creo le istanze opportune degli oggetti necessari
    SET objRS1 = Server.CreateObject("ADODB.RecordSet")
    SET objRS2 = Server.CreateObject("ADODB.RecordSet")
     
    strSQL = "SELECT DISTINCT nome_utente, operazione FROM tabella;"
    objRS1.Open strSQL, cn, 1, 3
     
    ' Ciclo il resultset per interrogare la subquery (la seconda select)
    
    pgCorr = Request.QueryString("pgVis")
    IF pgCorr = "" THEN   
      pgCorr = 1
    END IF
     
    ' numero di record per pagina
    objRS2.PageSize = 50
     
    Do While Not objRS1.EOF AND numRiga < objRS2.PageSize
     
    	strSQL = "SELECT TOP 1 * FROM tabella WHERE nome_utente = '" &_
    	objRS1("nome_utente") & "' and operazione = '" & objRS1("operazione") & "' ORDER BY ID DESC;"
    	objRS2.Open strSQL, cn, 1, 3
    	
    	objRS2.AbsolutePage = pgCorr
    	
    ' codice di utilizzo dei dati estratti
    	
    response.write objRS2("nome_utente") & "
    "
    response.write objRS2("operazione") & "
    
    "
     
        numRiga = numRiga + 1
        objRS2.Close 
        objRS1.MoveNext
    	
    LOOP
     
    ' Creo la barra di navigazione nelle pagine del resultset
    Response.Write "<P align='center'>Vai a pagina "
     
    ' Creo un Ciclo per visualizzare i link alle pagine in coda
    FOR i = 1 TO objRS2.PageCount
     
    ' Verifico che il link non faccia riferimento alla pagina corrente
    IF i <> CInt(pgCorr) THEN
          Response.Write "" & i & " | "
       ELSE
          Response.Write i & " | "
       END IF
    NEXT
    
    objRS1.Close
      
    SET objRS2 = Nothing
    SET objRS1 = Nothing
    							
    cn.Close
    Set cn = Nothing
    Ma adesso restituisce:
    ADODB.Recordset error '800a0e78'

    Operation is not allowed when the object is closed.
    Su questa riga:
    codice:
    FOR i = 1 TO objRS2.PageCount
    :master:
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

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.