Eduardo,
Es importante conocer y tener en mente el concepto de "corte de control".
Para cualquier análisis la tabla "plana" debe tener un orden que sigue el criterio del "corte".
Así, por ejemplo, si deseamos emitir un informe que diga:
* Informar deudas de "PEREZ" en mes de Mayo.
---Análisis---
Nuestra tabla debe contener información sobre:
- Fecha del Saldo
- Saldos
- Apellidos y nombres
- Demás datos no relevantes para el requerimiento de "corte" en el informe.
El informe resultante será la intersección de los tres conjuntos que hemos mencionado.
1) Fecha de Saldo:
En el conjunto de los "Días del Año" existen 365 elementos (a veces 366) agrupados en 12 subconjuntos llamados "Meses" y 52 subconjuntos denominados "Semanas".
Nuestra condición requiere que las fechas pertenezcan al mes de Mayo (5to mes).
Entonces una condición de corte será: ( MONTH( Tabla.Fecha ) = 5 )
2) Se pide que haya deudas. Eso implica que el saldo deberá ser negativo si es que consideramos los saldos positivos como deudores y los negativos como acreedores (desde nuestro punto de vista somos acreedores).
Así, la condición quedará como ( Tabla.Saldo < 0 )
3) Se pide que el apellido sea PEREZ.
Probablemente quien pide el informe no sepa qué nombre tiene la persona que busca pero lo reconocerá por su saldo.
Así la condición será: ( Tabla.Apellido = 'PEREZ' )
Debido a que nuestras condiciones de corte son sólo para producir la intersección, deberemos considerar también la forma en que habrá que presentar la información obtenida:
a) Ordenada por Fecha
b) Ordenada por Nombre (no olvidemos que la condición de "corte" implica que el apellido es una constante).
c) Ordenada por Saldo (en caso de desear los saldos en un cierto orden)
---Conclusión---
Ahora, Si hablásemos de SQL, nuestra selección obedecerá a un conjunto de datos que cumple TODOS los requisitos.
SELECT *
FROM Tabla
WHERE (((Month([Tabla].[Fecha]))=5) AND ((Tabla.Apellido)='PEREZ') AND ((Tabla.Saldo)<"0"))
ORDER BY Tabla.Fecha, Month([Tabla].[Fecha]), Tabla.Apellido;
FROM Tabla
WHERE (((Month([Tabla].[Fecha]))=5) AND ((Tabla.Apellido)='PEREZ') AND ((Tabla.Saldo)<"0"))
ORDER BY Tabla.Fecha, Month([Tabla].[Fecha]), Tabla.Apellido;
Bueno, lo demás es simplemente recorrer el cursor recibido (que en sí es una tabla) e imprimir los datos que sean pertinentes.
Espero haber ayudado
Saludos
José Luis Otermin
Soporte Técnico
--------------------------------------------------------------------
Alaska Software Inc.
Foros de Usuarios: news://news.alaska-software.com
Foros de Usuarios Web: http://news.alaska-software.com
Página Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
-------------------------------------------------------------------
Sería un gran placer para nosotros poder darle la bienvenida
a la 3er. Conferencia Europea de Desarrolladores de Xbase++
en Berlín - Alemania.
Para obtener los detalles, por favor haga clic acá:
http://www.xbasedevcon.com
------------------------------------------------------------------
José Luis Otermin
Soporte Técnico
--------------------------------------------------------------------
Alaska Software Inc.
Foros de Usuarios: news://news.alaska-software.com
Foros de Usuarios Web: http://news.alaska-software.com
Página Web: http://www.alaska-software.com
Base de Conocimientos en la Web: http://www.alaska-software.com/kbase.shtm
Oficina en Europa: Fax: +49 (0) 61 96 - 77 99 99 23
Oficina en EEUU: Fax: +1 (646) 218 1281
-------------------------------------------------------------------
Sería un gran placer para nosotros poder darle la bienvenida
a la 3er. Conferencia Europea de Desarrolladores de Xbase++
en Berlín - Alemania.
Para obtener los detalles, por favor haga clic acá:
http://www.xbasedevcon.com
------------------------------------------------------------------
----- Original Message -----From: Eduardo MartinezTo: ifclipper@...Sent: Tuesday, April 24, 2007 4:02 PMSubject: [ifclipper] Reporte con 4 cortes controlA los usuarios en Clipper, tengo un problema, estoy haciendo programas
financieros, y al realizar una segmentacion tengo que realizar desde
una base plana, otra base con 4 cortes control con sus respectivos
subtotales y un total general, alquien tiene una funcion o
procedimiento o algun utilitario en la cual pueda hacerlo, acepto
sugerencias.
gracias a todos