![ActiveDelphi - Índice do Fórum](templates/subSilver/images/logo_phpBB.gif) |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
rhamos Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Terça-Feira, 17 de Julho de 2007 Mensagens: 2
|
Enviada: Ter Jul 17, 2007 2:46 pm Assunto: Extrair todos os dias do mês |
|
|
Boa Tarde,
Possuo a seguinte procedure:
Citação: | CREATE PROCEDURE SP_FUNC_DIA_CLIENTE (
IN_FUNCIONARIO INTEGER,
IN_MES INTEGER,
IN_ANO INTEGER)
RETURNS (
OUT_IDFUNC INTEGER,
OUT_NOME VARCHAR(50),
OUT_DATA DATE,
OUT_IDCLIENTE INTEGER,
OUT_NOME1 VARCHAR(50),
OUT_HE1 TIME,
OUT_HS1 TIME,
OUT_HE2 TIME,
OUT_HS2 TIME,
OUT_PDIA DATE,
OUT_UDIA DATE)
AS
begin
for select f.IDFUNC, f.NOME, fc.DATA, fc.IDCLIENTE, c.NOME, fc.HE1, fc.HS1, fc. HE2, fc.HS2,
fc.data - EXTRACT(DAY FROM fc.data) + 1, fc.data - EXTRACT(DAY FROM fc.data) + 32 -
EXTRACT(DAY FROM fc.data - EXTRACT(DAY FROM fc.data) + 32)
from func f, FICHA fc, FICHA_FUNC ff, CLIENTE c
where f.idfunc = ff.idfunc and
fc.IDFICHA = ff.IDFICHA and
fc.IDCLIENTE = c.IDCLIENTE and
extract(month from fc.data) = :in_mes and
extract(year from fc.data) = :in_ano and
f.idfunc = :IN_FUNCIONARIO
group by f.IDFUNC, f.NOME, fc.DATA, fc.IDCLIENTE, c.NOME, fc.HE1, fc.HS1, fc.HE2, fc.HS2
order by fc.DATA, fc.HE1
into :OUT_IDFUNC, :OUT_NOME, :OUT_DATA, :OUT_IDCLIENTE, :OUT_NOME1, :OUT_HE1, :OUT_HS1,
:OUT_HE2, :OUT_HS2, :OUT_PDIA, :OUT_UDIA do begin
suspend;
end
end |
Tal procedure, me retorna os dados de fichas de serviço, informando a data que a ficha foi cadastrada, cliente, horas de serviços, funcionários e tal.
A partir dessa procedure executo uma query no delphi, onde o meu relatório (utilizo FortesReport) retorna os dados dessa query.
De uma forma mais clara, se escolho o mês de julho, o relatório irá mostrar apenas os dias que tem fichas cadastradas no mês informado. Entretando agora preciso que ele me retorne todos os dias do mês, mesmo que ele não tenha nenhuma ficha cadastrada.
Pode ser algo simples, mas estou batendo cabeça e não consigo resolver, se possível gostaria da ajuda de vocês.
Desde já, grato pela atenção. |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
thomazs Moderador
![Moderador Moderador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/moderador.gif)
![](images/avatars/2961552176c2f50263.png)
Registrado: Segunda-Feira, 1 de Março de 2004 Mensagens: 2835
|
Enviada: Dom Jul 22, 2007 7:35 pm Assunto: |
|
|
Bom, você poderia criar uma procedure que retornasse todos os dias do mês, e, desse um left join na procedure atual (ou mesclar as procedures também).
Código: |
set term ^ ;
create procedure sp_diasmes( mes integer, ano integer )
returns ( dia date )
as
declare variable dt date;
begin
dt := cast( ('01.'||:mes||'.'||:ano) as date);
while (extract(month from dt) = :mes) do begin
dia = dt;
suspend;
dt = dt + 1;
end
end
^
set term ; ^
|
_________________ Suporte e Consultoria em Desenvolvimento de Sistemas
Bacharel em Sistemas de Informação
Especialista em Bancos de Dados
Desenvolvimento: Clipper, Delphi, PHP, Python/Django |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
rhamos Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Terça-Feira, 17 de Julho de 2007 Mensagens: 2
|
Enviada: Qui Jul 26, 2007 1:37 pm Assunto: |
|
|
Problema resolvido. Fiz de outra forma e deu certo.
Obrigado pela ajuda THOMAZS
![Wink](images/smiles/icon_wink.gif) |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|