Ver Mensaje Individual
  #5 (permalink)  
Antiguo 13/11/2006, 11:34
Avatar de jerkan
jerkan
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
He conseguido adaptar un poco el paginador de jpinedo al mssql. Tras cambiar las funciones mysql por las equivalentes mssql, he añadido lo siguiente en la línea 320 aprox.
Código PHP:
 // Calculamos desde qué registro se mostrará en esta página
 // Recordemos que el conteo empieza desde CERO.
 
$_pagi_inicial = ($_pagi_actual-1) * $_pagi_cuantos;
 
 
// Consulta SQL. Devuelve $cantidad registros empezando desde $_pagi_inicial

/*** modificacion para SQL SERVER ***/

    //echo("<br />pagi_sql: ".$_pagi_sql);

    
$_orderby_subquery2 "";
    
$_orderby_subquery1 "";
    
$_orderby_query "";
    
    if( 
eregi("(ORDER BY [a-z0-9\., ]+)"$_pagi_sql$regs) == false )
    {    
        
$_pagi_sql .= " ORDER BY Id ASC";
        
$_orderby_subquery1 "ORDER BY subquery.Id DESC";
        
$_orderby_query "ORDER BY query.Id ASC";
    }
    else
    {
        
$_orderby_subquery1 $regs[1];
        
$_orderby_query $regs[1];
        
    
// cambiamos los ASC por DESC o al reves
    
        
$_orderby_temp str_replace("ASC""DESC"$_orderby_subquery1);
        if( 
$_orderby_temp == $_orderby_subquery1)
        {
            
$_orderby_temp str_replace("DESC""ASC"$_orderby_subquery1);
        }
        
$_orderby_subquery1 $_orderby_temp;
    }

    
$top_subquery2 $_pagi_inicial $_pagi_cuantos;
    
$_pagi_subquery2 str_replace"SELECT""SELECT TOP ".$top_subquery2$_pagi_sql);
        
    
// calculo del valor de top de la subquery1
        
if( $top_subquery2 $_pagi_totalReg )
        {
            
$top_subquery1 $_pagi_totalReg $_pagi_inicial;
        }
        else
        {
            
$top_subquery1 $_pagi_cuantos;
        }
        
    
$_pagi_subquery1 =     $_pagi_subquery1 "SELECT TOP ".$top_subquery1." * FROM (".$_pagi_subquery2.") as subquery ".$_orderby_subquery1;
        
    
//echo("<br />subquery2: ".$_pagi_subquery2);
    //echo("<br />subquery1: ".$_pagi_subquery1);
    // creamos la query final    
    
$_pagi_sqlLim "SELECT * FROM (".$_pagi_subquery1.") as query ".$_orderby_query;

    
//echo("<br />query final: ".$_pagi_sqlLim);
        
// $_pagi_sqlLim = $_pagi_sql." LIMIT $_pagi_inicial,$_pagi_cuantos";

/*** modificacion para SQL SERVER ***/

 
$_pagi_result ExecuteQuery($_pagi_sqlLim); 
Funciona bien con consultas simples, pero falla con consultas a más de una tabla. Invito a cualquiera a desarrollar el código.

Un saludo

Última edición por jerkan; 15/11/2006 a las 05:14 Razón: Fallos corregidos