GARANTIR DESCONTO

Fórum Probleminha Básico com Datas... :( #274407

29/03/2005

0

Alow pessoal

To no meio de uma rotina que tá funcionando quase que perfeitamente:

Ela é constituida de 2 laços, um laço simboliza o mes e o outro simboliza o dia do mes, e dentro desses laços está uma rotina de insert numa tabela, o que quero, quando eu incluir uma empresa, um calendário anual é incluido também. Eu achava que iria ficar lento, mas está normal (Firebird 1.52 com IBO :)).

Essa é a parte que tá funcionando, vamos ao problema.

dentre os vários campos que tenho, dentro desse insert, tem um campo chamado dia_da_semana, esse campo vai ser alterado de acordo com o ano, mes e dia que for incluido, dentro do laço.

(Esqueçam o restante, focalizem nesse problema abaixo...)

tenho 1 função que fiz, que vai alimentar um método do delphi chamado DayofWeek, ele simplesmente me pede uma data, e me diz, de forma numerica, o dia da semana (feito isso voce pode fazer outra rotina pra informar se é segunda, terça etc.)

Ele tá funcionando, mas quando é para informar o ultimo dia da semana, (o intervalo é de 1 a 7), ele me retorna 31 :(

Vou colocar a funcao e uma rotina exemplo, pra voces terem ideia do problema.

function TFrmEmpresas.concatena_data(const Adia, Ames, AAno: string): TDateTime;
var
junta: string;
begin
junta := ´´;
junta := (Adia)+´/´+(Ames)+´/´+(Aano) ;
result := strtodate(junta);
end;

exemplo de uso:

procedure TFrmEmpresas.Button1Click(Sender: TObject);
var
alimenta: tdate;
begin
inherited;
label1.Caption := datetostr(concatena_data(edit1.Text,edit2.Text,edit3.Text));
alimenta := DayOfWeek(strtodate(label1.Caption));
label2.Caption := copy(datetostr(alimenta),1,2);
end;

quero apenas saber como e por que o danado do ultimo dia da semana está aparecendo com 31.

Assim que eu resolver essaquestão, e se alguem quiser a rotina completa, fala aee que eu coloco.

Grato

Technos


Technos

Technos

Responder

Posts

29/03/2005

Kapak

É pq DayOfWeek retorna uma Word e não um TDate.


Responder

Gostei + 0

29/03/2005

Technos

Sei o que a DayofWeek, assim como a DayoftheWeek me retornam.

Só quero entender por que no ultimo dia da semana, ele me retorna 31 e nao 7.

Voce teria alguma sugestão ?

Grato

Technos


Responder

Gostei + 0

29/03/2005

Rjun

Dá um exemplo de uma data que DayOfWeek retorna 31.

Rogerio


Responder

Gostei + 0

29/03/2005

Kapak

alimenta := DayOfWeek(strtodate(label1.Caption)); 
label2.Caption := copy(datetostr(alimenta),1,2);
Sua variável ´alimenta´ está definida como TDate e recebe uma Word.
Depois vc transforma esse dado em DateToStr e pega as 2 primeiras posições.


Responder

Gostei + 0

29/03/2005

Kapak

Fiz um teste e no meu caso ela retorna 31 quando DayOfWeek = 1. Aí vc transforma DateToStr(1) = 31/12/1899; pegando as 2 primeiras posições ficará = 31.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar