FoxPro/Visual FoxPro - estudiante

 
Vista:

estudiante

Publicado por horacio ramirez (5 intervenciones) el 29/11/2006 01:17:24
tengo un problema yo quiero saber como hacer que aparezcan en mi detalle los registros de varias tablas. estoy trabajando con foxpro9.0

yo mando una tabla temporal1 a mi report.frx

Local clave

clave = tarjetas.clave_tar

Select * From tarjetas;
Where clave_tar = clave;
Order By clave_tar;
Into cursor temporal1
*brow

REPORT FORM C:\Tarjetas\informes\rpt_tarjeta.frx PREVIEW in screen

tengo mi tabla maestra temporal1 que tiene como esclavo a las tablas planos, rhumanos, tareas y material

el registro seleccionado para imprimir llega bien a mi tabla temporal1 de mi report, pero no despliega las tablas planos, rhumanos, tareas y material bien en mi detalle solo permite desplegar bien una tabla la de material y yo quiero desplegar 4 tablas en el detalle de mi form... y como emcabezado y pie de pagina tengo registros de mi tabla temporal1.

En si lo quiero imprimir es una tarjeta de trabajo donde temporal1 contiene el numero de tarjeta que deseo imprimir y dentro de esa tarjeta hay 3 planos con los datos xxxxx, 2 rhumanos con los datos xxxx, 10 tareas con los datos xxxx, y se necesitaran 265 materiales, etc...

esto es lo que pretendo hacer... Les agredeceria mucho su ayuda...

*****Si no pude explicarme bien me gustaria que me agregen a mi correo si es posible y asi pasarle gif de mis tablas y codigos o incluso mi proyecto con fuente ya que no es muy grande... gracias****
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:estudiante

Publicado por Plinio (7841 intervenciones) el 29/11/2006 02:27:54
La forma mas facil es poniendo todos los datos en un solo cursor, aunque VFP 9 tiene manera de imprimir varias tablas
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:estudiante

Publicado por Horacio Ramirez (5 intervenciones) el 29/11/2006 17:53:44
y cual es esa manera de imprimir varias tablas, revise un manual acerca de los bands, lo intente asi y obtube el mismo resultado, aunque de todos modos yo quiero poner las 4 tablas en el mismo detalle... Intente lo de juntar todas en un cursor con el select pero el problema es que se duplicaba los registros, y el distinc no funciona con memos, por eso estaba buscando otros metodos, pero no hablan mucho sobre ese tema todos hablan de reportes donde en el detalle ponen solamente una tabla y eso es sencillo, puedo relacionar otras tablas con la del detalle y no hay problema, pero ahora quiero meter 4 tablas en el detalle de las cuales cada tabla tiene un numero de registros diferentes, que es lo que creo que ocasiona el error...

Bueno, solo me queda crear una tabla en mi base de datos donde esten todos los campos de las 4 tablas y pasar los registros que yo quiero a esa tabla utilizando codigo...

Si alguien tiene una mejor forma de hacer lo que quiero, le agredeceria mucho si me pasa ese conocimientos. A mi me gusta mucho programar en fox, y me encataria intercambiar programas o conocimientos con otros programadores...

Gracias....
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:estudiante

Publicado por Horacio Ramirez (5 intervenciones) el 01/12/2006 23:31:50
Ya que nadie me dio una idea mejor, tuve que hacerlo de esta manera, aunque no me dejo muy convencido, pero lo importante es que funciona..

Utilizo muchos cursores porque mis tablas estan filtradas y para usar el recount() se me ocurrio de esa manera...

pongo esto por si otros tienen el mismo problema que yo y no sufran tanto solo adaptelo y ya...

si alguien sabe una forma mejor mandame un correo y no sean egoista con su conocimiento vale, bye...

Local clave, reg1, reg2, reg3, reg4, reg5, mayor

clave = tarjetas.clave_tar

Select * From tarjetas;
Where clave_tar = clave;
Order By clave_tar;
Into cursor temporal1

sele temporal1
reg1 = RECCOUNT()
mayor = reg1

Select * From planos;
Where tarje_pla = clave;
Order By clave_pla;
Into cursor temporal2

sele temporal2
reg2 = RECCOUNT()
IF reg2 > mayor
mayor = reg2
Endif

Select * From rhumanos;
Where tarje_rhu = clave;
Order By clave_rhu;
Into cursor temporal3

sele temporal3
reg3 = RECCOUNT()
IF reg3 > reg2
mayor = reg3
Endif

Select * From retareas;
Where tarje_ret = clave;
Order By clave_ret;
Into cursor temporal4

sele temporal4
reg4 = RECCOUNT()
IF reg4 > mayor
mayor = reg4
Endif

Select * From material;
Where tarje_mat = clave;
Order By clave_mat;
Into cursor temporal5

sele temporal5
reg5 = RECCOUNT()
IF reg5 > mayor
mayor = reg5
Endif

sele temporal
zap

FOR i=1 TO mayor
APPEND BLANK
Replace temporal.clave_tar WITH clave
ENDFOR

FOR i=1 TO reg2
sele temporal2
GO i
sele temporal
GO i
Replace temporal.clave_pla WITH temporal2.clave_pla;
temporal.nopla_pla WITH temporal2.nopla_pla;
temporal.nombr_pla WITH temporal2.nombr_pla;
temporal.revis_pla WITH temporal2.revis_pla;
temporal.fecha_pla WITH temporal2.fecha_pla;
temporal.afect_pla WITH temporal2.afect_pla
ENDFOR

FOR i=1 TO reg3
sele temporal3
GO i
sele temporal
GO i
Replace temporal.clave_rhu WITH temporal3.clave_rhu;
temporal.categ_rhu WITH temporal3.categ_rhu;
temporal.horas_rhu WITH temporal3.horas_rhu;
temporal.porce_rhu WITH temporal3.porce_rhu
ENDFOR

FOR i=1 TO reg4
sele temporal4
GO i
sele temporal
GO i
Replace temporal.clave_ret WITH temporal4.clave_ret;
temporal.nombr_ret WITH temporal4.nombr_ret;
temporal.notas_ret WITH temporal4.notas_ret
ENDFOR

FOR i=1 TO reg5
sele temporal5
GO i
sele temporal
GO i
Replace temporal.clave_mat WITH temporal5.clave_mat;
temporal.canti_mat WITH temporal5.canti_mat;
temporal.unida_mat WITH temporal5.unida_mat;
temporal.descr_mat WITH temporal5.descr_mat
ENDFOR

Select * From temporal;
Order By clave_pla;
Into cursor temporald

REPORT FORM C:\Tarjetas\informes\rpt_tarjeta.frx PREVIEW in screen
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