Excelente Miguel !! muy explicativo.
voy a ponerlo en practica pero seguro va a andar.
saludos y muchas gracias.!
Carlos
----- Original Message -----
From: Carlos Miguel FARIAS
To: GUFA List Member
Sent: Saturday, September 01, 2012 7:11 PM
Subject: [GUFA] Consulta por SELECT
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