Fórum Programa de Calculo de Vencimento #236762

08/06/2004

0

Olá a todos da lista vim por meio desta para esclarecer o meu ploblema.

Tenho 3 TDateTimePicker Chamado Mês/Ano_Inicial e Mês/Ano_Final com propiedade format =´MM/yyyy´ e queria que quando eu selecionasse o mes/ano inicial e o Mes/Ano final ele faria o calculo do vencimento entre eles.
E outro TDateTimePicker chamado dia_da_semana com propiedade format=´dddd´ que receberia os dias da semana e quando selecionar um dia da semana o vencimento caíra sempre nele.

Por exemplo :

Mês/Ano Inicial : 01/2004

Mês/AnoFinal:03/2004

Dia da Semana : Segunda - Feira

Dentro da Dbgrid ficaria assim o resultado :

Nº Carnê : Vencimento : Valor :

1 05/01/2004 R$ 10,00
2 02/02/2004 R$ 10,00
3 01/03/2004 R$ 10,00

OBS: O Banco de dados se Chama Carnê.DB

E possui os seguintes campos.

Codigo (+) *
N_carnê (I) *
Mês_Ano (A-6)*
Dt_venc (D)
Cod_Socio (I)
Nome_Socio (A-6)
Cod_Preço (I)
Vl_preço ($)

Obrigado.


Pellegrini

Pellegrini

Responder

Posts

09/06/2004

Thomaz_prg

uma função para ver em quantas parcelas o valor deveria ser dividido você poderia fazer da seguinte forma:

function ver_parcelas( mesano_ini, mesano_fim: string ):integer;
var
  difparc, ia, id, fa, fd:integer;
begin
  result:=0;
  id:=strtoint( copy( mesano_ini , 1 , 2) );  //transf.o dia em integer
  fd:=strtoint( copy( mesano_fim, 1 , 2) );
  ia:=strtoint( copy( mesano_ini , 3 , 4) );  //transf. o ano em integer
  fa:=strtoint( copy( mesano_fim, 3 , 4) );
  while (id < fd) and (ia<=fa) do begin
    result:=result+1;
    id:=id+1
    if id>12 then begin
      id:=1;
      ia:=ia+1;
    end;
  end;
end;


A função acima retornaria a quantidade de parcelas que o valor seria dividido.


Para saber a data correta você poderia fazer o seguinte:
O parametro usado na função abaixo é um valor inteiro representando o dia da semana. Por exemplo domingo=1, segunda=2, etc.
A função abaixo retorna a data em que cair o dia da semana escolhido, no caso, o primeiro dia.
Exemplo: retdata(2,m), retornaria a data da primeira segunda do mes [b:7a7cbdd68c]m[/b:7a7cbdd68c]

func retdata( dia:integer; mesano:string ):date;
var 
  i:integer;
  d:string
begin
  i:=1;
  d:=inttostr(i)+´/´+copy(mesano,1,2)+´/´+copy(mesano,3,4);
  while dayofweek(strtodate(d))<>dia do begin
    i:=i+1;
    d:=inttostr(i)+´/´+copy(mesano,1,2)+´/´+copy(mesano,3,4);
  end;
  result:=strtodate(d);
end;


Acho que é isso.Qualquer coisa, poste sua dúvida e tentaremos ajudá-lo.


Responder

Gostei + 0

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

Aceitar