Ola...tou com mais um problema agora com meu gerador de mensalidades..
tenho um programinha para uma ONG escola perto de minha casa...tou dando uma força pra galera lá..e neste programinha tem um gerador de mensalidade aonde a pessoa coloca o mês e ano e vencimento da mensalidade de depois clicka no botão e ai gera as mensalidade de todo o mês para uns 300 alunos.
funciona perfeito...porem quando o aluno paga a mensalidade adiantada......ai a mensalidade como ainda não está gerada ...porque é gerado mês a mês......então acaba sendo lançado em uma tela manualmente a mensalidade.....até aqui beleza...o problema que quando ai vem outro mês e é gerado a mensalidade torna a gerar novamente para aquele aluno que já pagou deixando duplicidade de mensalidades..
então eu gostaria de ao gerar a mensalidade ele verificasse se o aluno já tem a mensalidade na tabela...e ai não geraria de novo...para não haver duplicidade.
//abaixo filtra na query para filtrar o codigo da tuma e valor da mensalidade
{não esquecendo de configurar a query com uma instrução la dentro dela}
with Query1 do
begin
Close;
with SQL do
begin
Clear;
Add('Select Valormensalidade From Turma');
Add('Where Codigo = ' + QuotedStr(vAux));
end;
Open;
end;
Table2CodTurma.AsInteger:=StrToInt(Vaux);
Table2Valor.ascurrency := Query1ValorMensalidade.AsCurrency; //aqui coloca o valor filtrada da mensalidade
Table2Total.ascurrency := Query1ValorMensalidade.AsCurrency; //aqui coloca o valor filtrada da mensalidade
//table2Valor.ascurrency := STRTOFLOAT(EditValor.TEXT); // valor da mensalidade (irá a mesama para todos alunos, pois não esta sendo feito na matricula)
//table2Total.ascurrency := STRTOFLOAT(EditValor.TEXT); // valor da mensalidade (irá a mesama para todos alunos, pois não esta sendo feito na matricula)
TABLE1.next; //avanço para o proximo aluno parar gerar a mesalidade do proximo
END;
SHOWMESSAGE('OK...Gerado as Mensalidades para este mês/Ano'+' = '+combobox1.text+'/'+combobox2.text);
END;
A duvida é...Como eu faria este processo dentro do que eu já tenho acima...?? eu poderia gerar pro ano inteiro...para ai tem alunos que entrão e saem da escola...ai iria dar mais problemas..por isso eu gero mês a mês...
Pergunta
Eder
Ola...tou com mais um problema agora com meu gerador de mensalidades..
tenho um programinha para uma ONG escola perto de minha casa...tou dando uma força pra galera lá..e neste programinha tem um gerador de mensalidade aonde a pessoa coloca o mês e ano e vencimento da mensalidade de depois clicka no botão e ai gera as mensalidade de todo o mês para uns 300 alunos.
funciona perfeito...porem quando o aluno paga a mensalidade adiantada......ai a mensalidade como ainda não está gerada ...porque é gerado mês a mês......então acaba sendo lançado em uma tela manualmente a mensalidade.....até aqui beleza...o problema que quando ai vem outro mês e é gerado a mensalidade torna a gerar novamente para aquele aluno que já pagou deixando duplicidade de mensalidades..
então eu gostaria de ao gerar a mensalidade ele verificasse se o aluno já tem a mensalidade na tabela...e ai não geraria de novo...para não haver duplicidade.
o codigo que eu gero a mensalidade é este abaixo:
procedure TFormGeraMensalidade.XiButton1Click(Sender: TObject);
var
dia : TDatetime;//Verifica se dia digitado na baixa é menor que a data atual
vaux: string;//verifica o codigo da turma...para pegar o valor da mensalidade de cada turma
begin
//
If Combobox1.text = '' then
Begin
Showmessage('Selecione o mês');
Combobox1.setfocus;
Exit;
End;
//
If Combobox2.text = '' then
Begin
Showmessage('Selecione o Ano');
Combobox2.setfocus;
Exit;
End;
//
If EditVencimento.text = ' / / ' then
Begin
Showmessage('Digite o Vencimento da Mensalidade!');
EditVencimento.setfocus;
Exit;
End;
//abaixo verifica de a data do vencimento é menor que a atual...
dia:=strtodate(EditVencimento.text);
if dia < date then
begin
showmessage('Esta Data de Vencimento é menor que a Data Atual, Favor Verificar.');
exit
end;
//INICIO
//Abaixo verifica se já foi gerado a mensalidao do mês/ano para não dar duplicidade
TABLE2.OPEN;//ABRO A TABELA MENSALIDADE
TABLE2.FIRST;//VOU PARA O PRIMEIRO REGISTRO
//ABAIXO VERIFIQUE SE AS MENSALIDADES já FORAM GERADAS.
while Table2.eof = false do begin
if ((Table2MES.asSTRING = (COMBOBOX1.TEXT)) and (Table2ANO.asSTRING = (COMBOBOX2.TEXT))) THEN
BEGIN
SHOWMESSAGE('Já esta gerado as Mensalidades para este mês/Ano'+' = '+combobox1.text+'/'+combobox2.text+' - Favor Verificar..');
EXIT;
END;
table2.next;
End;
//FIM....
//Aqui começa a gerar as mensalidades automaticas...
TABLE1.open; //abro a tabela alunos
TABLE1.first; //vou para o primeiro registro
while TABLE1.eof = false do begin // enquanto fim da tabela for igual a FALSE
if (table1DATADEM.AsDateTime < 1) then begin
table2.Insert; // ou seja da um insert para cada aluno
table2codAluno.asinteger := table1codigo.asinteger; //alimento o campo cod_aluno com o registro da tabela alunos atual
vAux:= Table1Turma.AsString;// aqui recebe o cod da turma para pegar o valor mensalidade de cada turma
table2Data.asDateTime := (date);
table2Mes.asInteger := strtoint(combobox1.TEXT);
table2Ano.asInteger := strtoint(combobox2.TEXT);
table2Vencimento.asDateTime := StrToDate(EditVencimento.TEXT);
//abaixo filtra na query para filtrar o codigo da tuma e valor da mensalidade
{não esquecendo de configurar a query com uma instrução la dentro dela}
with Query1 do
begin
Close;
with SQL do
begin
Clear;
Add('Select Valormensalidade From Turma');
Add('Where Codigo = ' + QuotedStr(vAux));
end;
Open;
end;
Table2CodTurma.AsInteger:=StrToInt(Vaux);
Table2Valor.ascurrency := Query1ValorMensalidade.AsCurrency; //aqui coloca o valor filtrada da mensalidade
Table2Total.ascurrency := Query1ValorMensalidade.AsCurrency; //aqui coloca o valor filtrada da mensalidade
//table2Valor.ascurrency := STRTOFLOAT(EditValor.TEXT); // valor da mensalidade (irá a mesama para todos alunos, pois não esta sendo feito na matricula)
//table2Total.ascurrency := STRTOFLOAT(EditValor.TEXT); // valor da mensalidade (irá a mesama para todos alunos, pois não esta sendo feito na matricula)
Table2Descontos.ascurrency := 0;
Table2Acrescimo.ascurrency := 0;
Table2Total.ascurrency := Query1ValorMensalidade.AsCurrency;
Table2Baixa.asString := 'não';
Table2.Post; //Salvo a mensalidade deste aluno
END;
TABLE1.next; //avanço para o proximo aluno parar gerar a mesalidade do proximo
END;
SHOWMESSAGE('OK...Gerado as Mensalidades para este mês/Ano'+' = '+combobox1.text+'/'+combobox2.text);
END;
A duvida é...Como eu faria este processo dentro do que eu já tenho acima...?? eu poderia gerar pro ano inteiro...para ai tem alunos que entrão e saem da escola...ai iria dar mais problemas..por isso eu gero mês a mês...
Grato
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.