Array
(
)

Efetuar uma rotina até que satisfeita uma condição

Pro-luck
   - 31 ago 2004

Quero que meu sistema preencha doze registros com valores únicos, mas, com datas distintas, ou seja, primeiro com valor de 50,00 por exemplo e datado de 10/01/04, o segundo também com valor de 50,00 mas datado de 10/02/04 e assim sucessivamente até chegar as doze parcelas.

Tentei usar o While...do e o For...do, mas, acredito que pela minha inexperiência não esteja conseguindo fazê-lo.

Se alguém souber como fazer isso e puder me ajudar, conte com os meus sinceros agradecimentos.

Obs: Já consegui fazer isso mas, a cada clique num determinado botão, ou seja, clicava-se 12 vezes no botão, agora quero os doze de uma só vez, ou melhor, num só clique.


* Esse é o código que estou utilizando para gerar as mensalidades uma a uma.

procedure TMensalidades_.UmEmUmClick(Sender: TObject);
Var
MensalidadeReplica: TDateTime;
begin
MensalidadeReplica := StrToDateTime(dm_.QryMensalidadesVencimento.Text);
dm_.QryReplicaMensalidades.Append;
dm_.QryReplicaMensalidadesAluno.Text := dm_.QryMensalidadesAluno.Text;
dm_.QryReplicaMensalidadesVencimento.Text := DateTimeToStr(IncMonth(MensalidadeReplica,1));;
dm_.QryReplicaMensalidadesCurso.Text := dm_.QryMensalidadesCurso.Text;
dm_.QryReplicaMensalidadesMesMensalidade.Text := dm_.QryMensalidadesMesMensalidade.Text;
dm_.QryReplicaMensalidadesValor.Value := dm_.QryMensalidadesValor.Value;
dm_.QryReplicaMensalidadesJuros_mora.Value := dm_.QryMensalidadesJuros_mora.Value;
dm_.QryReplicaMensalidadesJuros_AM.Value := dm_.QryMensalidadesJuros_AM.Value;
dm_.QryReplicaMensalidades.Post;

dm_.QryMensalidades.Append;
dm_.QryMensalidadesAluno.Text := dm_.QryReplicaMensalidadesAluno.Text;
dm_.QryMensalidadesVencimento.Text := dm_.QryReplicaMensalidadesVencimento.Text;
dm_.QryMensalidadesCurso.Text := dm_.QryReplicaMensalidadesCurso.Text;
dm_.QryMensalidadesMesMensalidade.Text := dm_.QryReplicaMensalidadesMesMensalidade.Text;
dm_.QryMensalidadesValor.Value := dm_.QryReplicaMensalidadesValor.Value;
dm_.QryMensalidadesJuros_mora.Value := dm_.QryReplicaMensalidadesJuros_mora.Value;
dm_.QryMensalidadesJuros_AM.Value := dm_.QryReplicaMensalidadesJuros_AM.Value;
dm_.QryMensalidades.Post;
ShowMessage(´Mensalidade replicada com sucesso!!!´);
dm_.QryReplicaMensalidades.Delete;
end;



--------------------------------------------------------------------------------------

Para essa rotina funcionar, existe uma tabela com a data incrementada e em seguida a
devolve para a tabela principal, e o processo é repetido a cada clique no botão.
Agora quero fazê-lo sem ter que clicar no botão doze vezes, quero clicar uma única vez e
loop executá-lo até que chegue a 12ª mensalidade.


Té +


Emerson
   - 31 ago 2004

procedure TMensalidades_.UmEmUmClick(Sender: TObject);
var
    MensalidadeReplica: TDateTime;
    i: integer;
begin
    MensalidadeReplica := Date; // pega a data do dia

    for i := 1 to 12 do
    begin
        dm_.QryReplicaMensalidades.Append;
        dm_.QryReplicaMensalidadesAluno.AsString := Aluno;
        dm_.QryReplicaMensalidadesVencimento.AsDate := MensalidadeReplica;
        dm_.QryReplicaMensalidadesCurso.AsString := Curso;
        dm_.QryReplicaMensalidadesMesMensalidade.AsInteger := MonthOf(dm_.QryReplicaMensalidadesVencimento.AsDate);
        dm_.QryReplicaMensalidadesValor.AsFloat := Valor;
        dm_.QryReplicaMensalidadesJuros_mora.Value := Juros;
        dm_.QryReplicaMensalidadesJuros_AM.Value := Acrescimo;
        dm_.QryReplicaMensalidades.Post;
        MensalidadeReplica := IncMonth(MensalidadeReplica); // acrescenta um mês na data
    end;
end;


acho que é isso....