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: 21 años, 1 mes
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