ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Pegar todas as data a partir de uma data firebird[Resolvido]

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
nildglan
Colaborador
Colaborador


Registrado: Sábado, 16 de Agosto de 2008
Mensagens: 1564
Localização: Goianésia do Pará

MensagemEnviada: Qui Dez 08, 2016 9:51 am    Assunto: Pegar todas as data a partir de uma data firebird[Resolvido] Responder com Citação

Pessoal alguém tem stored procedure que posso pegar todas as data a partir da data informada até os dia atual exemplo:

digamos que o vencimento foi 30/01/2015

então nessa estored procedure gerasse aos seguintes registros
28/02/2015
30/03/2015
30/04/2015
30/05/2015
30/06/2015

e etc até no mês atual?


Editado pela última vez por nildglan em Sex Dez 09, 2016 2:32 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
anderbelluno
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011
Mensagens: 1030
Localização: Cianorte-PR

MensagemEnviada: Qui Dez 08, 2016 10:59 am    Assunto: Responder com Citação

Não poderia ser uma função no delphi mesmo?
se vc declarar DateUtils e usar o IncMonth talvez vc consiga chegar onde quer.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
nildglan
Colaborador
Colaborador


Registrado: Sábado, 16 de Agosto de 2008
Mensagens: 1564
Localização: Goianésia do Pará

MensagemEnviada: Qui Dez 08, 2016 11:14 am    Assunto: Responder com Citação

tem uma stored procedure no firebird tem que ser nele,
o mais importante dessa função é que pegue todos os meses sem passar nem hum pra fazer o calculo correto os dias não importa
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Dez 08, 2016 8:02 pm    Assunto: Responder com Citação

Boa noite,

Experimente fazer uns testes para ver se é obtido o resultado esperado:

Código:
SET TERM ^ ;

CREATE OR ALTER PROCEDURE USP_RETORNA_DATAS (
    dataref date)
returns (
    datanova date)
as
declare variable i integer;
begin
  I = 1;
  WHILE (DATEDIFF(MONTH, DATEADD(MONTH, I, DATAREF), CURRENT_TIMESTAMP) >= 0) DO
    BEGIN
      datanova = DATEADD(MONTH, I, DATAREF);
      I = I + 1;
      suspend;
    END
end^

SET TERM ; ^


Espero que ajude


Editado pela última vez por imex em Ter Mar 07, 2023 5:25 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
nildglan
Colaborador
Colaborador


Registrado: Sábado, 16 de Agosto de 2008
Mensagens: 1564
Localização: Goianésia do Pará

MensagemEnviada: Sex Dez 09, 2016 10:41 am    Assunto: Responder com Citação

imex quase deu certo cara só tem dois detalhes que o primeiro mês não entrou e deveria entrar
exemplo

eu coloquei como parâmetro 30/01/2016

então a primeira deveria entrar ficaria assim

30/01/2016
29/02/2016
30/03/2016
etc...

e o outro exemplo é o seguinte esse mês nós não estamos no dia 30 ainda então entraria até a data atual
ou seja 09/12/2016

imex porque isso é para calcular juros atrasados entendeu

então só faltou esses detalhes, como faria?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sex Dez 09, 2016 12:43 pm    Assunto: Responder com Citação

Experimente dessa forma:

Código:
CREATE OR ALTER PROCEDURE USP_RETORNA_DATAS (
    dataref date)
returns (
    datanova date)
as
declare variable i integer;
begin
  I = 0;
  WHILE (DATEADD(MONTH, I, DATAREF) <= CURRENT_TIMESTAMP) DO
    BEGIN
      datanova = DATEADD(MONTH, I, DATAREF);
      I = I + 1;
      suspend;
    END
end^


Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
nildglan
Colaborador
Colaborador


Registrado: Sábado, 16 de Agosto de 2008
Mensagens: 1564
Localização: Goianésia do Pará

MensagemEnviada: Sex Dez 09, 2016 1:14 pm    Assunto: Responder com Citação

imex ficou perfeita cara agora eu acho que não sei como fazer o que quero
porque olha só quanto a primeira data ficou bom agora e quanto o juros do desse mês como vou fazer?
porque por exemplo hoje é 09/12/2016 certo?
da forma que vc colocou da perfeito se agente colocar a data de vencimento menor que a data atual exemplo
01/01/2016
ai sai legal assim

01/01/2016
01/02/2016
01/03/2016
01/04/2016
01/05/2016
01/06/2016
01/07/2016
01/08/2016
01/09/2016
01/10/2016
01/11/2016
01/10/2016

agora se colocar uma data maior que a data de hoje exemplo 30/12/2016
ai ela só sai a té dezembro por causa do parâmetro entendeu

assim

30/01/2016
29/02/2016
30/03/2016
30/04/2016
30/05/2016
30/06/2016
30/07/2016
30/08/2016
30/09/2016
30/10/2016
30/11/2016


imex agradeço por tudo e vc é dos cara melhor que vir em sql, se vc precisar de alguma coisa que eu possa ajudar cara é só falar
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sex Dez 09, 2016 2:09 pm    Assunto: Responder com Citação

Não sei se entendi corretamente... você está se referindo ao dia?
Experimente dessa forma:

Código:
CREATE OR ALTER PROCEDURE USP_RETORNA_DATAS (
    dataref date)
returns (
    datanova date)
as
declare variable i integer;
begin
  I = 0;
  WHILE (DATEDIFF(MONTH, DATEADD(MONTH, I, DATAREF), CURRENT_DATE) >= 0) DO
    BEGIN
      datanova = DATEADD(MONTH, I, DATAREF);
      if (datanova > current_date) then
          datanova = current_date;
      I = I + 1;
      suspend;
    END
end^


Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
nildglan
Colaborador
Colaborador


Registrado: Sábado, 16 de Agosto de 2008
Mensagens: 1564
Localização: Goianésia do Pará

MensagemEnviada: Sex Dez 09, 2016 2:25 pm    Assunto: Responder com Citação

isso mesmo imex
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB