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








Responder a