Fórum Loop de Mensalidade #432224
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:
Aí sim, depois de "jogado" nas variáveis os dados que eu preciso eu faço o loop assim:
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!
//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
Curtir tópico
+ 0
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:
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 =)
//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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)