Efetuar uma rotina até que satisfeita uma condição
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é +
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é +
Pro-luck
Curtidas 0
Respostas
Emerson Nascimento
31/08/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....
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....
GOSTEI 0