Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

 
 
Herramientas Buscar en Tema Desplegado
  #7  
Antiguo 06-12-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Supongo que das la posibilidad al usuario de crear almacenes, pero aún así, en el ancho de un folio, ¿cuantas columnas esperas poner como máximo?

Para hacerlo vía SP, debes saber de antemano un máximo de columnas.

Cuando ese código lo metes en un SP, tienes que crear parámetros de salida al propio SP, y después ya en delphi pones en el SQL de un tquery:
Código SQL [-]
select  * from nombreStoreProcedure
ahora doble clic al Tquery y añades los campos persistentes..... aquí te aparecen los parámetros de salida del SP y ahora ya sí puedes hacer:

DatasetCAmpo1.Value

para enlazarlo al informe o a donde quieras.

Aquí te pongo un ejemplo real, que saca los totales por semanas de todos los trabajadores entre dos fechas determinadas, lo que devuelve es:
Código:
alias   semana1 semana2 totaljornales pagasextras    pagar   atrasados
manolo   300€     200€    500 €          0 €           500€        0€
jose     300€     200€    500 €         150 €          650€        0€
Código SQL [-]

CREATE PROCEDURE SPJORNALESAPAGAR (
    DESDE DATE,
    HASTA DATE)
RETURNS (
    ALIAS VARCHAR(25),
    CATEGORIA VARCHAR(25),
    SEMANA1 NUMERIC(10,2),
    SEMANA2 NUMERIC(10,2),
    TOTALJORNALES NUMERIC(10,2),
    ANTICIPOS NUMERIC(10,2),
    PAGASEXTRAS NUMERIC(10,2),
    PAGAR NUMERIC(10,2),
    ATRASADOS SMALLINT)
AS
DECLARE VARIABLE JORNALESATRASADOS NUMERIC(10,2);
DECLARE VARIABLE ANTICIPOSATRASADOS NUMERIC(10,2);
DECLARE VARIABLE PAGASEXTRASATRASADAS NUMERIC(10,2);
begin

  ATRASADOS = 0;
for select alias,  categoria,  sum(salario) from vwjornalobra
  where idtrabajador = :idtrabajador
        and fecha between :desde and :HASTA
        and pagado = 'No'
  group by alias, categoria
  into :alias, :categoria, :TOTALjornales do
begin
  totaljornales = coalesce(totaljornales, 0.0);

  select COALESCE(sum(salario),0.0) from vwjornalobra
  where idtrabajador = :idtrabajador
        and (fecha between encodeDate(1,1, extractyear(:desde)) and :Hasta)
        and pagado = 'No'
  into :jornalesatrasados;

  jornalesatrasados = coalesce(jornalesatrasados,0.0);

  if (totaljornales <> jornalesatrasados) then
    ATRASADOS = 1;

  select coalesce(sum(salario),0.0) from vwjornalobra
  where idtrabajador = :idtrabajador
        and fecha between :desde and :DESDE + 6
        and pagado = 'No'
  into :SEMANA1;

  select coalesce(sum(salario),0.0) from vwjornalobra
  where idtrabajador = :idtrabajador
        and fecha between :desde+7 and :HASTA
        AND pagado = 'No'
  into :SEMANA2;

  select coalesce(sum(Importe),0.0)  from Anticipo
    where ANTICIPO.Idtrabajador = :IDTRABAJADOR
     and anticipo.fecha between :desde and :HASTA
     and liquidado = 'No'
  into :ANTICIPOS;

  anticipos = coalesce(anticipos, 0.0);

    select coalesce(sum(Importe),0.0)  from Anticipo
    where ANTICIPO.Idtrabajador = :IDTRABAJADOR
     and (fecha between encodeDate(1,1, extractyear(:desde)) and :Hasta)
     and liquidado = 'No'
  into :anticiposatrasados;

  anticiposatrasados = coalesce(anticiposatrasados,0.0);

  if (ANTICIPOS <> anticiposatrasados) then
    ATRASADOS = ATRASADOS + 2;

  select coalesce(sum(Importe),0.0)  from PAGAEXTRA
    where Idtrabajador = :idtrabajador
     and fecha between :desde and :HASTA
     and liquidado = 'No'
  into :PAGASEXTRAS;

  select coalesce(sum(Importe),0.0)  from PAGAEXTRA
    where Idtrabajador = :idtrabajador
     and (fecha between encodeDate(1,1, extractyear(:desde)) and :Hasta)
     and liquidado = 'No'
  into :pagasextrasatrasadas;

  if (pagasextras <> pagasextrasatrasadas) then
    ATRASADOS = ATRASADOS + 4;

  PAGAR = :jornalesatrasados + :pagasextrasatrasadas - :anticiposatrasados;

  suspend; /*devolver un registro a delphi ya que he asignado todos los 
                parámetros de salida */
end; /* end del primer for select*/


end

Como ves, lo que hago es buscar en cada tabla y asignar el valor al parámetro de salida del SP
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
 



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
Ayuda con Impreso Matricial de 132 Columnas itsi Impresión 5 22-03-2007 09:01:01
Creación de impreso Aprendiendo Impresión 1 19-03-2007 13:44:39
el preview del QReport es distinto q Impreso? mrmanuel Impresión 1 10-06-2005 16:55:49
Usen la imaginacion Mario1980 Conexión con bases de datos 6 13-01-2005 21:57:00
Qué importante es la imaginación!!! __cadetill Humor 5 12-06-2004 00:13:36


La franja horaria es GMT +2. Ahora son las 17:26:05.


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