Con gusto... es un método de un objeto que uso. El código está un tanto desrpolijo porque lo fui modificando sobre la marcha, pero suelo usar siempre el mismo. Y lo de sql_coteo lo podría solucionar mejor con un mssql_num_rows (aclaro porque me da un tanto de vergüenza postear este código
)...
Código PHP:
function & buscarTodo ($fechaDesde, $fechaHasta, $arrLocales, $arrTurnos, $arrRubros, $arrSubrubros, $arrNrocli, $arrTipof, $arrNrof, $orden, &$cantPaginas, $pagina, $sentido_registro)
{
$sql="FROM OPENROWSET('SQLOLEDB', '".$this->const->DB_SERVER."'; '".$this->const->DB_USER."'; '".$this->const->DB_PASSWORD."','SELECT * FROM CEP.dbo.Locales') AS remota";
$sql .= " INNER JOIN ".$this->const->INFOCOMERCIAL." INNER JOIN rubros ON ".$this->const->INFOCOMERCIAL.".".$this->const->INFOCOMERCIAL_RUBRO."=rubros.id INNER JOIN subrubros ON subrubros.id = ".$this->const->INFOCOMERCIAL.".".$this->const->INFOCOMERCIAL_SUBRUBRO." ON remota.lcl_id = ".$this->const->INFOCOMERCIAL.".".$this->const->INFOCOMERCIAL_LOCAL;
$claus = " WHERE (id_registro = id_registro";
// LAS RESTRICCIONES DE BÚSQUEDA SE AGREGAN SÓLO SI NO VIENEN VACÍAS.
if ($fechaDesde!="")
{
$claus = $claus." and fecha>= '".str_replace("/","-",$fechaDesde)."'";
}
if ($fechaHasta!="")
{
$claus = $claus." and fecha<= '".str_replace("/","-",$fechaHasta)."'";
}
if($arrLocales!="")
{
$cadAux="";
for($i=0;$i<count($arrLocales)-1;$i++)
{
$cadAux.="local=".$arrLocales[$i]." OR ";
}
if($cadAux!="")
{
$cadAux=substr($cadAux,0,strlen($cadAux)-4);
$claus.=" AND (".$cadAux.")";
}
}
if($arrTurnos!="")
{
$cadAux="";
for($i=0;$i<count($arrTurnos)-1;$i++)
{
$cadAux.="turno=".$arrTurnos[$i]." OR ";
}
if($cadAux!="")
{
$cadAux=substr($cadAux,0,strlen($cadAux)-4);
$claus.=" AND (".$cadAux.")";
}
}
if($arrRubros!="")
{
$cadAux="";
for($i=0;$i<count($arrRubros)-1;$i++)
{
$cadAux.="rubro=".$arrRubros[$i]." OR ";
}
if($cadAux!="")
{
$cadAux=substr($cadAux,0,strlen($cadAux)-4);
$claus.=" AND (".$cadAux.")";
}
}
if($arrSubrubros!="")
{
$cadAux="";
for($i=0;$i<count($arrSubrubros)-1;$i++)
{
$cadAux.="subrubro=".$arrSubrubros[$i]." OR ";
}
if($cadAux!="")
{
$cadAux=substr($cadAux,0,strlen($cadAux)-4);
$claus.=" AND (".$cadAux.")";
}
}
if($arrNrocli!="")
{
$cadAux="";
for($i=0;$i<count($arrNrocli)-1;$i++)
{
$cadAux.="nrocli=".$arrNrocli[$i]." OR ";
}
if($cadAux!="")
{
$cadAux=substr($cadAux,0,strlen($cadAux)-4);
$claus.=" AND (".$cadAux.")";
}
}
if($arrTipof!="")
{
$cadAux="";
for($i=0;$i<count($arrTipof)-1;$i++)
{
$cadAux.="tipof=".$arrTipof[$i]." OR ";
}
if($cadAux!="")
{
$cadAux=substr($cadAux,0,strlen($cadAux)-4);
$claus.=" AND (".$cadAux.")";
}
}
if($arrNrof!="")
{
$cadAux="";
for($i=0;$i<count($arrNrof)-1;$i++)
{
$cadAux.="numerof=".$arrNrof[$i]." OR ";
}
if($cadAux!="")
{
$cadAux=substr($cadAux,0,strlen($cadAux)-4);
$claus.=" AND (".$cadAux.")";
}
}
// FIN DE RESTRICCIONES DE BÚSQUEDA
$claus .= ")";
$sql=$sql.$claus;
// $sql_conteo ES LA SENTENCIA SQL PARA AVERIGÜAR EL TOTAL DE FILAS DEL RESULTADO DE BÚSQUEDA
// LA SENTENCIA SE GENERA A PARTIR DE LA SENTENCIA SQL PARCIAL ANTES GENERADA
$sql_conteo = "SELECT COUNT(*) AS cantid_registroad ".$sql;
// echo "<br />SENTENCIA DE CONTEO SQL: ".$sql_conteo."<br />";
// SE MANDA A EJECUTAR LA SENTENCIA $sql_conteo
$rs=$this->buscar($sql_conteo);
$f=$rs->dameFila();
$cantPaginas=(int)(($f["cantid_registroad"]-1)/$this->const->RESULTADOS_POR_PAGINA)+1;
if($sentido_registro=="")
{
$sentido_registro="ASC";
}
if ($sentido_registro=="ASC")
{
$no_sentido_registro="DESC";
}
else
{
$no_sentido_registro="ASC";
}
$sql = $sql." ORDER BY ".$orden;
if ($sentido_registro != "")
{
$sql.=" ".$sentido_registro;
}
if($pagina==0)
{
$pagina=1;
}
$posta="SELECT * FROM (SELECT TOP (".($this->const->RESULTADOS_POR_PAGINA).") * FROM (SELECT TOP (".($pagina*$this->const->RESULTADOS_POR_PAGINA).") ".$this->const->INFOCOMERCIAL.".*, rubros.descripcion AS rubros, subrubros.descripcion AS subrubros, remota.lcl_descripcion ".$sql.") AS derivedtbl_1 ORDER BY ".$orden." ".$no_sentido_registro.") AS derivedtbl_2 ORDER BY ".$orden." ".$sentido_registro.";";
echo $posta;
return $this->buscar($posta);
}
¡Gracias por responder!