Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-07-2008
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
Modificar tabla para banda detalle

Hola amigos del club delphi

Tengo el siguiente inconveniente creo una consulta mediante un procedimiento y esta información la quiero mostrar en un reporte en una banda de detalle pero el problema radica en quiero q no existe ninguna casilla en null en el reporte ya q esto me desperdicia espacio, quiero que la tabla siguiente

este es el procedimiento que me genera la tabla

Código SQL [-]

begin
   /*FACTURAS QUE ME EXPORTAN SOLO EL IVA*/
   SELECT DESCUENTO FROM FACTURA WHERE N_FACTURA = :FACTURA INTO DESCUENTO;
   FOR SELECT S.IVA, SUM(I.IVA), SUM(I.VALOR) FROM SERVICIO S, ITEMSERVICIO I, ORDEN_SERVICIO O, FACTURA F
   WHERE I.SERVICIO = S.CODIGO AND I.ORDEN = O.N_ORDEN AND F.N_FACTURA = :FACTURA AND F.NORDEN = O.n_orden GROUP BY
   S.IVA INTO :PORCENTAJE, :TIVA, :TTOTAL DO
   BEGIN
      NFAC = :FACTURA;
      BASE = :TTOTAL/(1+:PORCENTAJE/100);
      BASE1 = :BASE;
      BASE = :BASE - (BASE*DESCUENTO/100);
      TIVA = BASE1 * (PORCENTAJE/100);
      TTOTAL = BASE + TIVA;
      suspend;
   END

   PORCENTAJE = NULL;
   TIVA = NULL;
   ttotal = NULL;
   BASE = NULL;

  /*FORMAS DE PAGO*/
  SELECT N_ORDEN FROM ORDEN_SERVICIO WHERE N_FACTURA = :factura
  INTO :ORDEN;
  FOR SELECT FORMA_PAGO, sum(VALOR)  from ANTICIPO WHERE N_ORDEN = :ORDEN group by forma_pago
  INTO :FPAGO, :VFPAGO DO
  BEGIN
     NFAC = :FACTURA;
     suspend;
  end


end

Tabla arrojada

Código:
Porcentaje     IVA      TOTAL        BASE       FPAGO     VALOR
10              19.127   210.400     121.272    <null>        <null>
16                1.972    14.300       12.327    <null>        <null>
<null>           <null>    <null>        <null>      CXC        119.500
<null>           <null>    <null>        <null>    EFECTIVO    65.000
<null>           <null>    <null>        <null>    T.C.           15.000
<null>           <null>    <null>        <null>    T.D.           25.200
Si existe alguna forma de tranformala en esta que me optimiza los espacios en la banda detalle

Código:
Porcentaje     IVA      TOTAL        BASE       FPAGO     VALOR
10              19.127   210.400     121.272     CXC        119.500
16                1.972    14.300       12.327   EFECTIVO    65.000
<null>           <null>    <null>        <null>    T.C.           15.000
<null>           <null>    <null>        <null>    T.D.           25.200
Utilizo Delphi 7, firebird 2.0 y QuickReport 4.05 espero que haya quedado clara la duda.

Gracias

Última edición por Vlady fecha: 24-07-2008 a las 21:32:33.
Responder Con Cita
  #2  
Antiguo 24-07-2008
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 17
TOPX Va camino a la fama
Hola Vlady,

Se me ocurre que para un único FOR SELECT podría hacer INNER JOIN entre todas las tablas, menos con ANTICIPO (en último lugar), en cuyo caso haría un RIGHT OUTER JOIN.

De esta manera, mostraría los "valores con IVA" y los "anticipos" juntos; aún si estos "anticipos" no tienen correspondiente registro entre los "valores con IVA", sólo dejaría los primeros campos como NULL.
__________________
"constructive mind, destructive thoughts"

Última edición por TOPX fecha: 24-07-2008 a las 21:56:02.
Responder Con Cita
  #3  
Antiguo 24-07-2008
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
Gracias TOPX por tus sugerencias pero no te entiendo muy bien lo que quieres decirme, gracias
Responder Con Cita
  #4  
Antiguo 24-07-2008
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 17
TOPX Va camino a la fama
Lo que quise decir es algo así:

Código SQL [-]
   FOR SELECT 
    S.IVA, SUM(I.IVA), SUM(I.VALOR), 
    A.FORMA_PAGO, sum(A.VALOR)   
   FROM SERVICIO S 
    INNER JOIN ITEMSERVICIO I ON S.CODIGO = I.SERVICIO
    INNER JOIN ORDEN_SERVICIO O ON O.N_ORDEN = I.ORDEN
    INNER JOIN FACTURA F ON O.N_ORDEN = F.NORDEN
    RIGHT OUTER JOIN ANTICIPO A ON O.N_ORDEN = A.N_ORDEN
   WHERE F.N_FACTURA = :FACTURA 
   GROUP BY S.IVA, A.FORMA_PAGO 
   INTO 
    :PORCENTAJE, :TIVA, :TTOTAL, 
    :FPAGO, :VFPAGO DO
   BEGIN
      NFAC = :FACTURA;
      BASE = :TTOTAL/(1+:PORCENTAJE/100);
      BASE1 = :BASE;
      BASE = :BASE - (BASE*DESCUENTO/100);
      TIVA = BASE1 * (PORCENTAJE/100);
      TTOTAL = BASE + TIVA;
      
      SUSPEND;
   END

Lo hice con la mano izquierda y sin mirar, sólo espero que se entienda la idea.
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #5  
Antiguo 24-07-2008
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
Gracias topx por tus sugerencias organice la consulta y quedo asi:

Código SQL [-]
/*FACTURAS QUE ME EXPORTAN SOLO EL IVA*/
   SELECT DESCUENTO, NORDEN FROM FACTURA WHERE N_FACTURA = :FACTURA INTO ESCUENTO, :ORDEN;

   FOR SELECT S.IVA, SUM(I.IVA), SUM(I.VALOR), A.FORMA_PAGO, sum(A.VALOR)
   FROM SERVICIO S
   INNER JOIN ITEMSERVICIO I ON S.CODIGO = I.SERVICIO
   INNER JOIN ORDEN_SERVICIO O ON O.N_ORDEN = I.ORDEN
   RIGHT OUTER JOIN ANTICIPO A ON O.N_ORDEN = A.N_ORDEN
   WHERE O.N_ORDEN = :ORDEN
   GROUP BY S.IVA, A.FORMA_PAGO
   INTO :PORCENTAJE, :TIVA, :TTOTAL, :FPAGO, :VFPAGO DO
   BEGIN
      NFAC = :FACTURA;
      BASE = :TTOTAL/(1+:PORCENTAJE/100);
      BASE1 = :BASE;
      BASE = :BASE - (BASE*DESCUENTO/100);
      TIVA = BASE1 * (PORCENTAJE/100);
      TTOTAL = BASE + TIVA;
      suspend;
   END

Pero ahora me arroja por cada forma de pago los IVAS y por cada IVA LAS FORMA DE PAGO es decir que me aparecen 4 IVAS del 10 y 2 Formas de pago para CXC por ejemplo.

Código:
Porcentaje     IVA      TOTAL        BASE       FPAGO     VALOR
10              19.127   210.400     121.272     CXC        119.500
16                1.972    14.300       12.327    CXC        119.500
10              19.127   210.400     121.272   EFECTIVO    65.000
16                1.972    14.300       12.327   EFECTIVO    65.000
10              19.127   210.400     121.272    T.C.           15.000
16                1.972    14.300       12.327    T.C.           15.000
10              19.127   210.400     121.272    T.D.           25.200
16                1.972    14.300       12.327    T.D.           25.200
Depronto puede ser una sentencia que falta? o Realizar otra consulta sobre la tabla resultante en otro procedimiento?

Última edición por Vlady fecha: 24-07-2008 a las 22:41:31.
Responder Con Cita
  #6  
Antiguo 24-07-2008
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 17
TOPX Va camino a la fama
Ay, debí prever que obtendría un producto cartesiano ...

Creo que será por la falta de endorfinas últimamente, pero sólo se me ocurre preguntar:

¿Y si le deja los JOIN completos? (con FACTURA)
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #7  
Antiguo 24-07-2008
Avatar de Vlady
Vlady Vlady is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
Vlady Va por buen camino
Gracias TOPX
la tabla factura no es necesaria ya que con el numero de orden se puede hacer todo la relacion Factura - Orden de servicio es uno a uno, ademas las sumas de las formas de pago me las duplica por el numero der registros, esta tabla la voy a utilizar en el Quick report en una banda detalle, no se si existe una forma para que me muestre en el mismo renglon la información de la siguiente tabla
Código:
Porcentaje     IVA      TOTAL        BASE       FPAGO     VALOR
10              19.127   210.400     121.272    <null>        <null>
16                1.972    14.300       12.327    <null>        <null>
<null>           <null>    <null>        <null>      CXC        119.500
<null>           <null>    <null>        <null>    EFECTIVO    65.000
<null>           <null>    <null>        <null>    T.C.           15.000
<null>           <null>    <null>        <null>    T.D.           25.200
Alguien me puede ayudar

Última edición por Vlady fecha: 25-07-2008 a las 17:15:15.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Banda Detalle de diferente tamaño dramatvm Impresión 0 04-04-2007 21:52:52
fastreport - banda de detalle Blanco Impresión 0 13-06-2006 23:46:26
Personalizar una banda de detalle en RAVE zerelho Impresión 3 07-05-2005 22:01:53
Problema con banda detalle en QR ramiretor Impresión 2 27-11-2003 17:45:45
Problemas con Banda detalle de QReports Manuel Impresión 4 26-08-2003 16:46:43


La franja horaria es GMT +2. Ahora son las 01:05:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi