Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

André Maretti

Dificuldade de acrescentar 1 dia em uma data

Recommended Posts

Oi Pessoal,

 

Estou com uma dificuldade aqui para acrescentar um dia em uma data.

 

Descrevendo por cima o processo, eu preciso que meu sistema "ande" dia-a-dia de uma data a outra em um while e dependendo de algumas verificações ele grava algumas coisas no banco de dados.

 

O problema está em "andar dia-a-dia".

 

Criei uma variável chamada vDiaAnalisar do tipo TDate.

Essa variável recebe o primeiro dia, e no while há uma verificação para que aconteça o loop até que ela chegue na data final.

Dentro do While tentei colocar assim:

vDiaAnalizar := vDiaAnalizar + 1;

 

Ele até faz a maioria dos dias, mas algumas datas ele simplesmente pula.

Por exemplo, do dia 30/08 ele pula para o dia 01/09, e "esquece" do dia 31/08.

Outro exemplo: do dia 29/11 ele pula para o dia 01/12, o dia 30/11 é pulado tb...

Ou seja, todo último dia do mês ele pula...

 

Aí tentei assim:

vDataAnalizar := IncDay(vDataAnalizar, 1);

 

E o problema persiste.

 

Alguém tem idéia do pq ele está pulando o último dia dos meses?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca o código de todo o seu laço de repetição... provavelmente o problema está na montagem do while ou de alguma condição específica dentro dele, visto que o comando usado apenas incrementa a data em 1 dia.

 

[ ]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Pessoal,

 

Estou com uma dificuldade aqui para acrescentar um dia em uma data.

 

Descrevendo por cima o processo, eu preciso que meu sistema "ande" dia-a-dia de uma data a outra em um while e dependendo de algumas verificações ele grava algumas coisas no banco de dados.

 

O problema está em "andar dia-a-dia".

 

Criei uma variável chamada vDiaAnalisar do tipo TDate.

Essa variável recebe o primeiro dia, e no while há uma verificação para que aconteça o loop até que ela chegue na data final.

Dentro do While tentei colocar assim:

vDiaAnalizar := vDiaAnalizar + 1;

 

Ele até faz a maioria dos dias, mas algumas datas ele simplesmente pula.

Por exemplo, do dia 30/08 ele pula para o dia 01/09, e "esquece" do dia 31/08.

Outro exemplo: do dia 29/11 ele pula para o dia 01/12, o dia 30/11 é pulado tb...

Ou seja, todo último dia do mês ele pula...

 

Aí tentei assim:

vDataAnalizar := IncDay(vDataAnalizar, 1);

 

E o problema persiste.

 

Alguém tem idéia do pq ele está pulando o último dia dos meses?

Aqui vai um exemplo de pesquisa que uso não sei se esse é seu caso?

 

//======================sql OS_OK=========================
begin
       Try
      with frm_estatistica.Query1 do
       begin
       with SQL do
        begin
        Clear;
    Add('SELECT COUNT(CD_OS)FROM ordem_servicos');
    Add('WHERE IC_APROV_OS ="S"');
    Add('AND DT_FECHAMENTO_OS IS NOT NULL');
    Add('AND upper(DT_ABERTURA_OS) like"%'+Edit2.Text+'"');
//no edit2.text tem o periodo que desejo 01/2011 > pega todos os dias de janeiro de 2011
        end;
        Open;
        end;
      Except
      Begin
          Showmessage('Não foi possivel realizar esta operação');
      end;
      end;
Edit1.text:= frm_estatistica.DBGrid1.DataSource.DataSet.Fields[0].AsString;
 frm_estatistica.Label4.Caption:= Edit1.text;

 a:=strtofloat(frm_estatistica.Label2.Caption);
 b:=strtofloat(frm_estatistica.Label4.Caption);

 x:=((b*100)/a);
 Edit1.Text:=Format('%3.2f',[x]);
 frm_estatistica.Label18.Caption:=(Edit1.Text)+'%';
 os_ok:= strtoint(frm_estatistica.Label4.Caption);
 cor:=round(os_ok * 1000);
 frm_estatistica.Series1.Add(b,'OS_OK',cor);

END;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.