13/11/2006, 11:43
|
O_O | | Fecha de Ingreso: enero-2002 Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 23 años Puntos: 129 | |
Cita:
Iniciado por jerkan 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. |