PHP - mostrar datos en reporte

 
Vista:

mostrar datos en reporte

Publicado por Maria jose (1 intervención) el 29/07/2008 19:37:52
hola necesito la ayuda q me puedan prestar.tengo problemas con un reporte q hice en pdf me trae una serie de datos de solicitudes de pedidos pero no se como colocar que me los muestre por cliente es decir tengo una tabla en pdf q contiene pedido, cliente, fecha de pedido, tipo de pedido, monto; y me muestra todo pero necesito q si el cliente se repite me aparezca el cliente una sola vez y los datos de los pedidos q el efectuo me explico??? y si el cliente es distinto salte a la siguiente pagina y muestre lo q correponde al otro cliente es decir los pedidos q realizo con sus datos. sera q me indican como hago pra q me muestre los datos de esa manera por fa es urgente. debo hacerlo en la sql o al momento de mandar a imprimir la data en el .pdf ayuda .....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:mostrar datos en reporte

Publicado por Pineapple (183 intervenciones) el 29/07/2008 19:48:14
Haber Maria Jose,

No es necesario que escribas 2 veces el problema, a veces no tenemos el tiempo suficiente para contestar porque todos tenemos trabajo y esto lo hacemos por amor a la progrmación.

En cuanto a tu problema si quieres que el cliente te aparezca una sola vez puedes hacer primero un query de tu cliente y poner sus datos y adentro un subquery, no te sabría decir muy bien porque no especificas tus tablas como estan constituidas, ni algún select que hagas, pero me imagino que quedaría algo así:

select nopedido, fecha, etc from cliente where idcliente = (select id cliente where cliente_nombre = 'maria')

En cuanto a que brinque a otra página en el pdf pues necesitariamos ver el codigo con el que construyes tu pdf.

Espero haberte ayudado, y solo ten paciencia....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:mostrar datos en reporte

Publicado por maria jose (11 intervenciones) el 29/07/2008 20:25:21
gracias y disculpa mi insistencia tienes razon... esta es la programacion la sql y la impresion pdf como hago para hacer en base a esto lo q pregunte antes??..

$SQL = "SELECT ordenes.norden,
cliente.nombre,
ordenes.enviado,
ordenes.fechaorden,
ordenes.fecharequerida,
tipoorden,
(SELECT sum(ordenesdetallado.costo* ordenesdetallado.cant)
FROM ordenesdetallado
WHERE ordenesdetallado.norden = ordenes.norden
AND ordenesdetallado.estado = 3) as monto

FROM ordenes,
ordenesdetallado,
cliente,
tipoorden
WHERE ordenes.norden = ordenesdetallado.norden
AND ordenes.codcliente= cliente.codcliente
AND ordenes.tipoorden = tipoorden.codtipo
AND estado = 3";

if ($_POST['Cliente'] != 'Todos' ) $SQL .= "
AND ordenes.codcliente = '" . $_POST['Cliente'] . "' ";

if ($_POST['Types'] != 'Todos' ) $SQL .= "
AND ordenes.tipoorden ='" . $_POST['Types'] . "' " ;

$SQL .= "

AND ordenes.fechaorden >='" . FormatDateForSQL($_POST['FromDate']) . "'
AND ordenes.fechaorden <='" . FormatDateForSQL($_POST['ToDate']) . "'

GROUP BY ordenes.norden,
cliente.nombre,
ordenes.enviado,
ordenes.fechaorden,
ordenes.fecharequerida,
tipoorden
ORDER BY ordenes.tipoorden, ordenes.norden";

$ErrMsg = _('No items');
$DbgMsg = _('The SQL used to retrieve the search was');
$Result = DB_query($SQL,$db,$ErrMsg,$DbgMsg);

/*PDFStarter.php */
include('includes/PDFStarter.php');
$pdf->addinfo('Title',_('Reporte por Tipo de Pedido'));
$pdf->addinfo('Subject',_('Orders from') . ' ' . $_POST['FromDate'] . ' ' . _('to') . ' ' . $_POST['ToDate']);

$line_height=12;
$PageNumber = 0;
$TotalDiffs = 0;

include ('include/PDFHeader.inc'); //encabezado
$OrderNo =0;

while ($myrow=DB_fetch_array($Result)){


if ($YPos - (2 *$line_height) < $Bottom_Margin){
/*Then set up a new page */
$PageNumber++;
include ('include/PDFHeader.inc'); //encabezado
$OrderNo=0;

} /*end */


if($norden!=0 AND $norden != $myrow['norden']){
$pdf->line($XPos, $YPos,$Page_Width-$Right_Margin, $YPos);
$YPos -= $line_height;
}

if ($myrow['norden']!=$norden ){

$LeftOvers = $pdf->addTextWrap($Left_Margin,$YPos,320,$FontSize,$myrow['nombre'], 'left');
$LeftOvers = $pdf->addTextWrap($Left_Margin+180,$YPos,40,$FontSize,$myrow['norden'], 'left');
$LeftOvers = $pdf->addTextWrap($Left_Margin+230,$YPos,80,$FontSize,$myrow['tipoorden'], 'left');

$LeftOvers = $pdf->addTextWrap($Left_Margin+330,$YPos,100,$FontSize,ConvertSQLDate($myrow['fechaorden']), 'left');
$LeftOvers = $pdf->addTextWrap($Left_Margin+400,$YPos,80,$FontSize,ConvertSQLDate($myrow['fecharequerida']), 'left');
$LeftOvers = $pdf->addTextWrap($Left_Margin+480,$YPos,60,$FontSize,$myrow['monto'], 'right');

$YPos -= ($line_height);

$YPos -= ($line_height);
if ($YPos - (2 *$line_height) < $Bottom_Margin){
/*new page */
$PageNumber++;
include ('includes/PDFHeader.inc');
$norden'=0;
//$pdf->line($Page_Width-$Right_Margin, $YPos+10 ,220, $YPos+10);
} /*end */
// $pdf->line($Page_Width-$Right_Margin, $YPos+10,$Left_Margin, $YPos+10);
} }/* end of while */

}

$buf = $pdf->output();
$len = strlen($buf);
header('Content-type: application/pdf');
header('Content-Length: ' . $len);
header('Content-Disposition: inline; filename=Orden.pdf');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');

$pdf->stream();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:mostrar datos en reporte

Publicado por Pineapple (183 intervenciones) el 29/07/2008 20:40:44
Hola, es un poco complicado saber todo lo que hace puesto que me imagino es un codigo de la red peroo bueno si te fijas en estas lineas:

if ($YPos - (2 *$line_height) < $Bottom_Margin){
/*Then set up a new page */
$PageNumber++;
include ('include/PDFHeader.inc'); //encabezado
$OrderNo=0;

} /*end */

Hace una nueva página cuando la posicion esta a cierta distancia del margen de abajo, entonces ahi mismo puedes crear una condicion, si manejas a tus clientes por algun identificador (por ejemplo id) puedes guardar el primero que encuentres en una variable, y luego estarlo comparando, y cuando ya no sea igual al anterior sumar una página:

$PageNumber++;

Y recuerda incluir, el header que viene ahi, es solo de que juegues con los valores, creo que la clave de todo esta ahí, intentalo y dinos que tal te fue.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar