Loop de Mensalidade

09/01/2013

0

Olá pessoal, preciso muito da ajuda de vocês, o negócio é o seguinte, no meu sistema tenho um loop de geração de mensalidade, onde passo como parâmetro o código do aluno, o código da matricula do aluno e a data de inscrição do aluno, da seguinte maneira:

//Query responsável para pegar a data de inscrição e o codigo da matricula do aluno
  qryDataInscricao.Close;
  qryDataInscricao.Parameters.ParamByName('codigo').Value := codigoaluno;
  qryDataInscricao.Open;

  if ((DBEdit3.Text <> '')and(DBEdit4.Text <> '' )) then
    begin
      codigoMatricula := StrToInt(DBEdit4.Text);
      dataInscricao := StrToDateTime(DBEdit3.Text);
    end


Aí sim, depois de "jogado" nas variáveis os dados que eu preciso eu faço o loop assim:

      while i <= Quant_mes do
        begin

          qryInsertMensalidade.Parameters.ParamByName('codigo_paciente').Value := codigoaluno;
          qryInsertMensalidade.Parameters.ParamByName('codigo_matricula').Value := codigoMatricula;
          qryInsertMensalidade.Parameters.ParamByName('data_vencimento').Value :=  IncMonth(dataInscricao,(i));
          qryInsertMensalidade.Parameters.ParamByName('descricao').Value := 'MENSALIDADE - ' + DBEdit1.Text;
          qryInsertMensalidade.Parameters.ParamByName('valor').Value := qryDataInscricaovalor_mensal.Value;

          datarepetida := qryInsertMensalidade.Parameters.ParamByName('data_vencimento').Value;

          qryExisteDebito.Close;
          qryExisteDebito.Parameters.ParamByName('codigoPaciente').Value := codigoaluno;
          qryExisteDebito.Parameters.ParamByName('dataVencimento').Value := datarepetida;
          qryExisteDebito.Open;

        //Se tiver mensalidade para este mês não deverá gerar o mesmo
          if not qryExisteDebito.Locate('data_vencimento',datarepetida,[]) then
            begin
              qryInsertMensalidade.ExecSQL;
            end;


          qryGrid.Next;

          i := i + 1;

        end;//fim do while


Mas o problema é o seguinte, quando um mesmo aluno se matricula em duas modalidades ou mais, ele fica com dois códigos de matricula e duas datas de inscrição, que é o correto mesmo, porém eu não pensei nisso antes, minha dúvida é: como eu faço pra gerar as mensalidades com as duas matriculas??

Eu uso Delphi7, SQLServer 2005, ADOQuery e Datasource

Desde já agradeço!
Klaus

Klaus

Responder

Posts

10/01/2013

Walter Desidera

Você pode fazer um loop na tabela de matriculas e depois fazer o seu mesmo loop na tabela de menssalidades tipo. Um loop dentro de outro loop:

//Loop 1
qryDataInscricao.First;
while not(TabelaDadosAluno.eof) to
begin
//Loop 2
 For i:=0 to pred(NumeroDeMenssalidade) do
  with TabelaMenssalidade.Parameters do
    begin
    Parameters.ParamByName('codigo_paciente').Value := codigoaluno;
    Parameters.ParamByName('codigo_matricula').Value := codigoMatricula;
    ...
  end;
TabelaDadosdoAluno.Next;
end;


O primeiro loop corre a tabela de matriculas passando o código/matricula do aluno que entra no o segundo inserindo os dados das mensalidades. Um linha da tabela matriculas, insere várias mensalidades.

Espero ter ajudado =)
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar