Como hacer reportes en Fox

miriam
27 de Abril del 2006
hola, necesito hacer un reporte de varias tablas, con ciertas condiciones alguien sabe como filtrar esa informacion a un reporte

Jorge Martinez Ramos
27 de Abril del 2006
Cuando es condicional tendras que hacerlo con @ say

Ej.

SET DEVICE TO PRINTER
SET PRINT ON
SET PRINTER FONT 'arial narrow', 12 && STYLE 'BI'

do while !EOF( )
contador=contador+1
*SCATER MEMVAR

@ 04,60 SAY DMY(date())
@ 05.7,0.1 SAY alltrim(v_nom_ben)
@ 05.7,103 SAY v_total picture "999,999.99"
@ 07.5,0.1 SAY alltrim(v_letra)
@ 21,0.1 SAY alltrim(v_concepto1)
@ 22,0.1 SAY alltrim(v_concepto2)
@ 25,0.1 SAY v_cuentas
@ 25,95 SAY v_subtotal picture "999,999.99"
if v_iva > 0
@ 26,0.1 SAY v_coniva
@ 26,95 SAY v_iva picture "999,999.99"
endif
@ 30,0.1 SAY v_contrabanco
@ 30,110 SAY v_total picture "999,999.99"

.label5.caption=alltrim(STR(contador))
skip 1
if con = contador cuantas lineass imprime y ahi hacer el corte
ejec
exit
endif
ENDDO
* EJECT && Activa esto
SET DEVICE TO SCREEN
SET PRINT OFF

Emanuel
27 de Abril del 2006
SALUDOS!
PARA HACER SELECCIONES DE DIVERSOS DATOS EN MAS DE UNA TABLA, PRUEBA LOS "SELECT" SON MUY PODEROSOS Y TE AYUDARAN SIEMPRE. SI NO TIENES DONDE INVESTIGAR SOLO BUSCA EN INTERNET CON ALTAVISTA, GOOGLE, O TU BUSCADOR FAVORITO. SI QUIERES ESCRIBE A MI CORREO ELECTRONICO Y TE ENVIO MAS INFORMACION DEL MISMO. POR FAVOR NO DEJES DE CONTARME COMO TE FUE!

ferherpe
27 de Abril del 2006
Podrias ser mas especifica en cuanto a que condiciones te refieres?
En cuanto a lo que menciona el compañero no estoy del todo de acuerdo con el, ya que si es posible filtrar la informacion y mandarla por medio del report form, todo deoende de como planteas el problema, y por otro lado como planteas tus relaciones.
Cuando se trata de varias tablas yo acostumbro crear temporales y una tabla pivote(tambien temporal) para evitar cualquier conflicto en las tablas originales, sobre todo cuando estan trabajando en red. Anexo un ejemplo de codigo de lo que te comento, en este caso se manejan 5 tablas y el codigo es el evento click del CommandBottom imprimir.


thisform.i_clave2.value=ambito.clave2

sele proyecto
Public a,b,c,d
go top
locate for proyecto.clave=ambito.clave2
a=proyecto.clave
b=proyecto.localidad
c=proyecto.municipio
d=proyecto.distrito
select ambito1
*set filter to ambito1.clave2a=ambito.clave2
go top
scan for ambito1.clave2a=ambito.clave2
scatter memvar
select temp_amb
append blank
repla clave with ambito.clave2
gather memvar
select ambito1
endscan

select ambito2
go top
scan for ambito2.clave2b=ambito.clave2
select temp_amb
append blank
repla clave with ambito.clave2
repla tipo with ambito2.tipo
repla destino with ambito2.destino
repla distancia with ambito2.distancia
repla tiempo with ambito2.tiempo
select ambito2
endscan

select pivote
go top
locate for pivote.clave2c=ambito.clave2
go top
if not found()
append blank
repla clave2c with ambito.clave2
repla tipo with 1
repla descrip with 'Tipo de camino'
append blank
repla clave2c with ambito.clave2
repla tipo with 2
repla descrip with 'Ferrocarril'
endif

sys(1037)

select temp_amb

select ambito
set order to clave2
select pivote
set order to tipo
go top

select temp_amb
set order to tipo
go top

set relation to tipo into pivote
REPORT FORM rep_ambito PREVIEW

select pivote
use
use pivote excl
delete all
set talk off
zap
use pivote

select temp_amb
use
use temp_amb excl
delete all
set talk off
zap
use temp_amb

thisform.init
thisform.load

thisform.refresh()

Te hago la aclaracion que esta es una forma de elaborar reportes con varias tablas (mas no la unica), todo depende de como planteas tus filtros para crear los temporales y almacenar la informacion que necesitas en los temporales creados.

Espero que lo anterior te sea de utilidad
Saludos
Fernando