Los hermanos sean unidos, porque esa es la ley primera, si usas bien la union, 
dejas el campo memo fuera.

SELECT clave_cab, "1" AS "cTipo", fecha, NTOM(numero), campomemo, "si articulo 
en detalle es texto, poner aqui algo bien largo (guiones etc)" AS "Articulo" 
FROM cCabecera
UNION
SELECT clave_cab, "2", date(), NTOM(precio), "", articulo FROM lDetalle
ORDER BY 1, 2

Falta completar el cursor destino (no se si es sobre nativas o sobre que SGBD).
En una UNION, lo importante es que el tipo de dato de todas las columnas sea 
compatible (fecha, texto, etc.) y en el caso de tablas nativas (al menos), la 
longitud del primer select, dimensiona el ancho de los campos.
Cuidado con los memos, que un memo corto inicial, puede truncar los memos 
siguientes.

Aca la gracia la dato el campo definido en el primer SELECT como cTipo, que al 
momento del reporte, te está informando si los datos provienen de la cabecera 
("1") o del detalle ("2").
En el detalle, como no tenes campo fecha, inserto un valor equivalente 
(date()), no se si el numero en cabecera numerico, por las dudas, lo conviertes 
en algo parecido en ambos origenes (que luego sea utilizable), en el ejemplo 
pase numero a monetario.
Campomemo es un tipo string (cadena), puse una cadena vacia en el detalle, si 
articulo en detalle es texto, en el select de la cabecera debes poner una 
cadena (string) suficientemente larga para que no te trunque el texto de 
articulo (hay funciones en vfp para ello).
Saludos: Miguel, La Pampa (RA)




________________________________
 De: Carlos Morandin <[email protected]>
Para: GUFA List Member <[email protected]> 
Enviado: sábado, 1 de septiembre de 2012 9:41
Asunto: [GUFA] Consulta por SELECT
 

Hola, Miguel gracias por tu respuesta.
puedo hacer el grupo pero quiero hacer todo en un 
solo select y al agrupar tengo un solo registro y necesito todos los de 
detalle.
 
algo asi me queda:
clave_cab,fecha, numero ,campomemo, articulo , 
precio, 
 
1, 01-08-12 - 00000001 
,Prueba,      1,  10.20
1, 01-08-12 - 00000001 
,Prueba,      2,  5.00
1, 01-08-12 - 00000001 
,Prueba,      3,  7.20
1, 01-08-12 - 00000001 
,Prueba,      1,  10.20
1, 01-08-12 - 00000001 
,Prueba,      6,  
7.00
 
y quiero algo asi: 
 
1, 01-08-12 - 00000001 
,Prueba,      1,  10.20
1,   ,   ,  , 2,  
5.00
1,   ,   ,  , 3,  
7.20
1,   ,   ,  , 1,  
10.20
1,   ,  ,   
, 6,  7.00
 
La idea es no traer el campo memo en cada registro.
quizas no se puede con un select.
Muchas gracias.
Carlos Morandin
 
 
 
----- Original Message ----- 
>From: Carlos Miguel FARIAS 
>To: GUFA List Member 
>Sent: Saturday, September 01, 2012 9:31  AM
>Subject: [GUFA] Consulta por SELECT
>
>
>Agrupa los datos, usa cCabeceraId para hacer el grupo, en la  cabecera del 
>grupo sacas los datos de la cabecera y por detalle el detalle  (valga la 
>redundacia).
>De  esa manera la lógica te la maneja el reporte, y podes aprovechar el pie de 
> cada grupo para agregar datos que calculas en el reporte (como totales,  
>cantidad de items, etc.)
>Saludos:  Miguel, La Pampa (RA)
>
>
>
>
>________________________________
> De: Carlos Morandin  <[email protected]>
>Para: GUFA List Member  <[email protected]> 
>Enviado: sábado, 1 de septiembre de 2012  9:07
>Asunto: [GUFA] Consulta  por SELECT
>
>
> 
>Hola,
> 
>una consulta, tengo que hacer un SELECT de dos  tablas para mostrarla en un 
>informe y quiero hacerla con un 
select
>por ejemplo tengo un archivo cabecera (cCabecera)  y un archivo detalle 
>(cDetalle) 
>al hacer el
>SELECT * FROM cCabecera  FROM cDetalle JOIN cDetalle ON cCabecera.id = 
>cDetalle.id_cab  me trae todo bien lo que yo quiero pero si por ejemplo el 
>archivo cCabecera  tiene un campo memo me trae el campo memo (que lo necesito 
>mostrar en el  reporte) en todos los registros.
>es posible que me lo traiga solo en uno de los  registros (por ejemplo en el 
>primero)
> 
>cCabecera = "fecha,numero,campomemo"
>lDetalle       =  "articulo,cantidad,precio"
> 
>al hacer el SELECT me trae:
> 
>fecha,numero,campomemo,articulo,cantidad,precio
>tantas veces como registros tenga  lDetalle.
> 
>La otra alternativa seria armarlo con un cursor y  rellenarlo a mano pero 
>quiero evitarlo.
> 
>Aclaro que trabajo con cursoradapter y en el  reporte no puedo poner ni 
>relacionar tablas en dataenvironment.
> 
>Espero se entienda.
> 
>Muchas gracias 
>Saludos
>Carlos Morandin
> 
> 
> 
>
>

Responder a