Ayuda en reporte en VFP 6.0

Como puedo vaciar los registros de dos tablas en una sola hoja.. De tal manera que los registros de la primera queden en la parte superior y los registros de la segunda en la parte de abajo... Lo he intentado pero los registros salen alternados y no agrupados.
Gracias de antemano.

1 respuesta

Respuesta
1
¿Las dos tablas tienen la misma estructura? Si es así, puedes hacer un select que una las dos tablas en un solo cursor usando el union, y agregar un campo que te sirva para distinguir cuales registros vienen de la tabla A y cuales de la tabla B. Luego puedes agrupar en el reporte por este campo...
Suerte!
Gracias gadora por tu respuesta... eres muy amable... pero mis tablas tienen estructura diferentes...
Mandame la estructuras de las tablas, y más información sobre el reporte que deseas generar... estoy segura que debe haber un select por ahí que resuelva el problema...
Tabla 1 (cursos recibidos)
idprof nombre tipo Institución
0001 inglés 1 medio UNICACH
0001 computo básico UNAM
Tabla 2 (reconocimientos obtenidos)
idprof nombre descripción nivel
0001 premio chiapas
0001 premio UNICACH
No tengo tu e-mail... por eso te escribo parte de las estructuras (por espacio). Lo que quiero hacer es que en una sola hoja, pueda yo imprimir en forma de tabla (como la estructura mostrada)los cursos que ha recibido un profesor, claro con su encabezado que diga "cursos recibidos" y abajo los reconocimientos que tiene, también con un encabezado "reconocimientos obtenidos". En dos hojas no tengo problema, pero en una no he podido hacerlo. El reporteador de VFP 6.0 no lo permite... a lo mejor con trucos.
Gracias gadora... por help me.
Esta solución quizás no es la más elegante pero es la más sencilla que se me ocurre. Consiste en crear un cursor con todos los campos de las dos tablas (completando con 0 los campos numéricos y con espacios los campos caracteres) y que sea un union de todos los registros. Tomando como base la estructura que me mandaste el select seria como sigue (añadí el campo grp para poder agrupar por el en el reporte):
select 1 as grp, idprof, nombre as nombre_c, tipo, institucion, space(20) as nombre_r, space (35) as descripcion, 0 as nivel from cursos union all select 2 as grp, idprof, space(20) as nombre_c, 0 as tipo, space(35) as institucion, nombre as nombre_r, descripcion, nivel from reconocimientos into cursor cursor1
En el reporte incluir un grupo por el campo grp y en el detalle incluir todos los campos de cursor1, con una expresión en el print when de los campos prevenir que se muestren solo los campos que corresponden a cada grupo. Por ej. iif(grp=1,.T.,.F.) muestra el campo cuando el grp es 1, o sea, un curso.
Espero que te ayude,... suerte!
Voy a probar tu solución... me parece muy buena... después te digo que pasó...
Saludos desde Chiapas México.
Robert López Riley
Después que lo pruebes acuérdate de finalizar esta pregunta...
Guadalupe (de República Dominicana)
Gadora, yo creo que esta va a ser la respuesta más larga de la web... ya cree el cursor, pero como incluyo los campos a mi reporte... según veo no lo puedo trabajar como una tabla cualquiera...
Ojalá no te aburra mi novatez.
Basar un reporte en un cursor es muy sencillo, no pongas ninguna tabla en el dataenviroment del reporte y en los campos que insertes no incluyas el alias. Por ej. Si antes insertabas el campo idprof como tabla1. Idprof ahora solo debes poner idprof.
Si ya tienes el reporte creado solo tienes que quitar los alias de todos los campos.
En el código de tu programa, antes de mandar a ejecutar el report form incluye un select al cursor que creaste (si en un reporte no especificas un alias, fox sabe que quieres usar el alias que se encuentra seleccionada en el momento), esto es algo como:
select cursor1
report form miReporte preview
Suerte!
Muchas gracias gadora, con algunas pequeñas modificaciones ya saqué el reporte...
te estoy muy agradecido...
Te mereces un cafecito.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas