Ver Mensaje Individual
  #6 (permalink)  
Antiguo 13/11/2006, 11:43
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
Iniciado por jerkan Ver Mensaje
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);
    
    
$top_subquery2 $_pagi_inicial $_pagi_cuantos;
    
$_pagi_subquery2 str_replace"SELECT""SELECT TOP ".$top_subquery2$_pagi_sql);

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

    
// 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 ".$_pagi_orderby_subquery1;
        
    
//echo("<br />subquery2: ".$_pagi_subquery2);
    //echo("<br />subquery1: ".$_pagi_subquery1);
    // creamos la query final    
    
$_pagi_sqlLim "SELECT * FROM (".$_pagi_subquery1.") as query ".$_pagi_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
Estaría bueno que te contactaras con Jpinedo (autor original del "Paginator" que modificastes) a ver si pueden sacar alguna versión "for MS SQL Server".

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.