Fórum If, then, else quem pode ajudar? #387667
30/09/2010
0
O sistema é ESCOLAR preciso numerar os alunos que são matriculados no campo NUMERO, como vcs podem ver já estou conseguindo numerar, só que preciso colocar uma restrição na numeração, ou seja, quando formamos uma turma, exemplo 20 alunos todos eles recebem o seu numero, o qual será colocado no diário de classe, fichas, etc. Imagine que chegue um aluno no meio do ano, essa turma não pode mais ser renumerada, pois teria que trocar todos os documentos já preenchidos. Então o que preciso é fazer uma opção que mim permita ao matricular este aluno recem chegado, o sistema pegue o último número da tabela, ou seja, o número 20 +1, então esse aluno ficará fora da ordem alfabética será o 21.
O objetivo é este ao criar uma turma, exemplo de 3 alunos, lembrado que os alunos sao inseridos um a cada vez, vejamos como deve ser:
ao inserir o aluno joão o campo numero(claro que aqui só fica o numero) ficaria assim;
1 - joao
ao inserir o aluno bete, o sistema organiza em ordem alfabetica e depois numera.
1 - Bete
2 - joao
ao inserir o aluno Antonio, o sistema organiza em ordem alfabetica e depois numera.
1 - Antonio
2 - Bete
3 - Joao
então chegará um momento que a minha turma já esta fechada para começar a trabalhar o ano, então supondo que no meio do ano chegue um aluno, não posso mais alterar o que já esta numerado, aí nesse caso pensei colocar o ELSE para ele NÃO MAIS organizar em ordem e NEM NUMERAR conforme o IF e sim pegar o ultimo número da tabela NUMERO que seria o 3 somar com mais 1 então o aluno que esta entranto no meio do ano seria o numero 4, exemplo, Abelardo, então gostaria que ficasse assim:
1 - Antonio
2 - Bete
3 - Joao
4 - Abelardo
Pessoal fiz algumas mudanças, mas ainda não funciona, vejam como está:
procedure TFrmCadTurDisc.BtnSalvarAlunoClick(Sender: TObject);
var I : Integer;
begin
if RadioButton1.Checked then
begin
I := 1;
IBQryAlunoTurma.First;
while not DmDados.IBQryAlunoTurma.Eof do
begin
IBQryAlunoTurma.Edit;
IBQryAlunoTurma.FieldByName('numero').AsInteger := I;
IBQryAlunoTurma.Post;
IBQryAlunoTurma.Next;
Inc(I);
end;
end
else
if RadioButton2.Checked then
begin
IBQryAlunoTurma.Close;
IBQryAlunoTurma.SQL.Clear;
IBQryAlunoTurma.sql.add('SELECT MAX(numero)+1 FROM ALUNOTURMA WHERE ESCOLA = :ESCOLA and codigo_turma=:turma');
end;
end;
Osmar
Curtir tópico
+ 0Posts
01/10/2010
Wilson Junior
Espero ter colaborado.
Gostei + 0
01/10/2010
Osmar
Gostei + 0
01/10/2010
Eriley Barbosa
var
I : Integer;
Qry: TIBQuery;
begin
if RadioButton1.Checked then
begin
I := 1;
IBQryAlunoTurma.First;
while not DmDados.IBQryAlunoTurma.Eof do
begin
IBQryAlunoTurma.Edit;
IBQryAlunoTurma.FieldByName('numero').AsInteger := I;
IBQryAlunoTurma.Post;
IBQryAlunoTurma.Next;
Inc(I);
end;
end
else
if RadioButton2.Checked then
begin
Qry := TIBQuery.Create(nil); {: cria uma instância do objeto}
try
Qry.Database := SeuIBDataBase;
Qry.SQL.Add('SELECT MAX(numero)+1 FROM ALUNOTURMA WHERE ESCOLA = :ESCOLA and codigo_turma=:turma);
Qry.Params[0].AsString := SeuCampo que Guarda a escola;
Qry.Params[1].AsInteger := SeuCampo que Guarda o codigo da turma;
Qry.Open;
IBQryAlunoTurma.FieldByName('numero').AsInteger := Qry.Fields[0].AsInteger;
finally
FreeAndNil(Qry); {: libera o objeto da memória}
end;
end;
end;
Gostei + 0
01/10/2010
Wilson Junior
PS: Tendo um campo na tabela não significa que o mesmo deve ser impresso.
Exemplo:
Numero Nome Chegou_Apos
------ -------------- -----------
1 Antonio N
2 Bete N
3 Joao N
4 Abelardo S
Seu SQL:
SELECT CAST(0 AS INTEGER) AS Numero, Nome FROM ALUNO_TURMA ORDER BY Chegou_Apos, Nome
Após executar o SQL, faça o seu código antes de imprimir, mas somente esta parte.
I := 1;
IBQryAlunoTurma.First;
while not DmDados.IBQryAlunoTurma.Eof do
begin
IBQryAlunoTurma.Edit;
IBQryAlunoTurma.FieldByName('Numero').AsInteger := I;
IBQryAlunoTurma.Post;
IBQryAlunoTurma.Next;
Inc( I );
end;
Espero ter colaborado.
Gostei + 0
01/10/2010
Osmar
var
I : Integer;
Qry: TIBQuery;
begin
if RadioButton1.Checked then
begin
I := 1;
DmDados.IBQryAlunoTurma.First;
while not DmDados.IBQryAlunoTurma.Eof do
begin
DmDados.IBQryAlunoTurma.Edit;
DmDados.IBQryAlunoTurma.FieldByName('numero').AsInteger := I;
DmDados.IBQryAlunoTurma.Post;
DmDados.IBQryAlunoTurma.Next;
Inc(I);
end;
end
else
if RadioButton2.Checked then
begin
Qry := TIBQuery.Create(nil); {: cria uma instância do objeto}
try
Qry.Database := SeuIBDataBase;
Qry.SQL.Add('SELECT MAX(numero)+1 FROM ALUNOTURMA WHERE ESCOLA = :ESCOLA and codigo_turma=:turma);
Qry.Params[0].AsString := SeuCampo que Guarda a escola;
Qry.Params[1].AsInteger := SeuCampo que Guarda o codigo da turma;
Qry.Open;
DmDados.IBQryAlunoTurma.FieldByName('numero').AsInteger := Qry.Fields[0].AsInteger;
finally
FreeAndNil(Qry); {: libera o objeto da memória}
end;
end;
end;
Gostei + 0
01/10/2010
Osmar
var
I : Integer;
Qry: TIBQuery;
if RadioButton1.Checked then
begin
I := 1;
DmDados.IBQryAlunoTurma.First;
while not DmDados.IBQryAlunoTurma.Eof do
begin
DmDados.IBQryAlunoTurma.Edit;
DmDados.IBQryAlunoTurma.FieldByName('numero').AsInteger := I;
Dmdados.IBQryAlunoTurma.Post;
DmDados.IBQryAlunoTurma.Next;
Inc(I);
end;
end
else
if RadioButton2.Checked then
begin
Qry := TIBQuery.Create(nil); {: cria uma instância do objeto}
try
Qry.Database := DmDados.IBDatabase;
(AQUI TRAVA) Qry.IBQryAlunoTurma.SQL.Add('SELECT MAX(numero)+1 FROM ALUNOTURMA WHERE ESCOLA = :ESCOLA and codigo_turma=:turma);
Qry.IBQryAlunoTurma.Params[0].AsString := DmDados.IBQryAlunoTurmaESCOLA.AsString // que Guarda a escola;
Qry.IBQryAlunoTurma.Params[1].AsInteger := DmDados.IBQryAlunoTurmaCODIGO_TURMA // que Guarda o codigo da turma;
Qry.IBQryAlunoTurma.Open;
Qry.IBQryAlunoTurma.FieldByName('numero').AsInteger := Qry.Fields[0].AsInteger;
finally
FreeAndNil(Qry); {: libera o objeto da memória}
end;
end;
end;
Gostei + 0
01/10/2010
Eriley Barbosa
var
I : Integer;
Qry: TIBQuery;
begin
if RadioButton1.Checked then
begin
I := 1;
DmDados.IBQryAlunoTurma.First;
while not DmDados.IBQryAlunoTurma.Eof do
begin
DmDados.IBQryAlunoTurma.Edit;
DmDados.IBQryAlunoTurma.FieldByName('numero').AsInteger := I;
Dmdados.IBQryAlunoTurma.Post;
DmDados.IBQryAlunoTurma.Next;
Inc(I);
end;
end
else
if RadioButton2.Checked then
begin
Qry := TIBQuery.Create(nil); {: cria uma instância do objeto}
try
Qry.Database := DmDados.IBDatabase;
Qry.SQL.Add('SELECT MAX(numero)+1 FROM ALUNOTURMA WHERE ESCOLA = :ESCOLA and codigo_turma=:turma');
Qry.Params[0].AsString := DmDados.IBQryAlunoTurmaESCOLA.AsString; // que Guarda a escola
Qry.Params[1].AsInteger := DmDados.IBQryAlunoTurmaCODIGO_TURMA.AsInteger; // que Guarda o codigo da turma;
Qry.Open;
DmDados.FieldByName('numero').AsInteger := Qry.Fields[0].AsInteger;
Dmdados.IBQryAlunoTurma.Post;
finally
FreeAndNil(Qry); {: libera o objeto da memória}
end;
end;
end;
Gostei + 0
01/10/2010
Osmar
Gostei + 0
01/10/2010
Eriley Barbosa
Gostei + 0
01/10/2010
Osmar
where ESCOLA = :ESCOLA
and codigo_turma=:turma Osmar
Gostei + 0
01/10/2010
Eriley Barbosa
Gostei + 0
01/10/2010
Osmar
Gostei + 0
01/10/2010
Osmar
var
I : Integer;
Qry : TIBQuery; begin
If TForm(self).tag = 0 then
DmDados.IBQryAlunoTurmaESCOLA.AsString := sEscola; If dbEdtMatricula.Text = '' then
begin
ShowMessage('A Matrícula do Aluno deve ser Pesquisada!');
Exit;
end; DmDados.IBQryAlunoTurmaCODIGO_TURMA.Value := DmDados.IBQryTurmaCODIGO.Value;
DmDados.IBQryAlunoTurmaNOME_ALUNO.AsString := DmDados.IBQryAlunoNOME.AsString;
DmDados.IBQryAlunoTurmaMATRICULA_ALUNO.Value := DmDados.IBQryAlunoMATRICULA.Value; DmDados.IBQryAlunoTurma.Post; if rbAutomatica.Checked then
begin
I := 1;
DmDados.IBQryAlunoTurma.First;
while not DmDados.IBQryAlunoTurma.Eof do
begin
DmDados.IBQryAlunoTurma.Edit;
DmDados.IBQryAlunoTurma.FieldByName('numero').AsInteger := I;
Dmdados.IBQryAlunoTurma.Post;
DmDados.IBQryAlunoTurma.Next;
Inc(I);
end;
end
else
if rbManual.Checked then
begin
Qry := TIBQuery.Create(nil); {: cria uma instância do objeto}
try
Qry.Database := DmDados.IBDatabase;
Qry.SQL.Add('SELECT MAX(numero)+1 FROM ALUNOTURMA WHERE ESCOLA = :ESCOLA and codigo_turma=:turma order by NOME_ALUNO');
Qry.Params[0].AsString := DmDados.IBQryAlunoTurmaESCOLA.AsString; // que Guarda a escola
Qry.Params[1].AsInteger := DmDados.IBQryAlunoTurmaCODIGO_TURMA.AsInteger; // que Guarda o codigo da turma;
Qry.Open;
DmDados.IBQryAlunoTurma.Edit;
DmDados.IBQryAlunoTurma.FieldByName('numero').AsInteger := Qry.Fields[0].AsInteger;
Dmdados.IBQryAlunoTurma.Post;
finally
FreeAndNil(Qry); { libera o objeto da memória}
end;
end; PcAluno.ActivePageIndex := 0; end; end.
Gostei + 0
04/10/2010
Eriley Barbosa
Select *from ALUNOTURMA
where ESCOLA = :ESCOLA
and codigo_turma=:turma
order by NOME_ALUNO procedure TFrmCadTurDisc.BtnSalvarAlunoClick(Sender: TObject);
var
I : Integer;
Qry : TIBQuery;
begin
If TForm(self).tag = 0 then
DmDados.IBQryAlunoTurmaESCOLA.AsString := sEscola; If dbEdtMatricula.Text = '' then
begin
ShowMessage('A Matrícula do Aluno deve ser Pesquisada!');
Exit;
end;
DmDados.IBQryAlunoTurmaCODIGO_TURMA.Value := DmDados.IBQryTurmaCODIGO.Value;
DmDados.IBQryAlunoTurmaNOME_ALUNO.AsString := DmDados.IBQryAlunoNOME.AsString;
DmDados.IBQryAlunoTurmaMATRICULA_ALUNO.Value := DmDados.IBQryAlunoMATRICULA.Value; DmDados.IBQryAlunoTurma.Post;
//Vamos ver se só o refresh resolve, caso contrario tem que abrir e fechar a query novamente
DmDados.IBQryAlunoTurma.Refresh;
//Se não funcionar descomente o código abaixo
{DmDados.IBQryAlunoTurma.Close;
DmDados.IBQryAlunoTurma.Open;}
if rbAutomatica.Checked then
begin
I := 1;
DmDados.IBQryAlunoTurma.First;
while not DmDados.IBQryAlunoTurma.Eof do
begin
DmDados.IBQryAlunoTurma.Edit;
DmDados.IBQryAlunoTurma.FieldByName('numero').AsInteger := I;
Dmdados.IBQryAlunoTurma.Post;
DmDados.IBQryAlunoTurma.Next;
Inc(I);
end;
end
else
if rbManual.Checked then
begin
Qry := TIBQuery.Create(nil); {: cria uma instância do objeto}
try
Qry.Database := DmDados.IBDatabase;
Qry.SQL.Add('SELECT MAX(numero)+1 FROM ALUNOTURMA WHERE ESCOLA = :ESCOLA and codigo_turma=:turma order by NOME_ALUNO');
Qry.Params[0].AsString := DmDados.IBQryAlunoTurmaESCOLA.AsString; // que Guarda a escola
Qry.Params[1].AsInteger := DmDados.IBQryAlunoTurmaCODIGO_TURMA.AsInteger; // que Guarda o codigo da turma;
Qry.Open;
DmDados.IBQryAlunoTurma.Edit;
DmDados.IBQryAlunoTurma.FieldByName('numero').AsInteger := Qry.Fields[0].AsInteger;
Dmdados.IBQryAlunoTurma.Post;
finally
FreeAndNil(Qry); { libera o objeto da memória}
end;
end;
PcAluno.ActivePageIndex := 0;
end;
Gostei + 0
04/10/2010
Osmar
var
I : Integer;
Qry : TIBQuery; begin
(*só irá cadastrar a Turma quando for inserção *)
If TForm(self).tag = 0 then
DmDados.IBQryAlunoTurmaESCOLA.AsString := sEscola; (* verifica se o edit Ano está vazio *)
If dbEdtMatricula.Text = '' then
begin
(* exibe uma mensagem de alerta para o usuário *)
ShowMessage('A Matrícula do Aluno deve ser Pesquisada!');
(* sai do bloco em execução ou seja pula os comandos abaixo *)
Exit;
end; DmDados.IBQryAlunoTurmaCODIGO_TURMA.Value := DmDados.IBQryTurmaCODIGO.Value;
DmDados.IBQryAlunoTurmaNOME_ALUNO.AsString := DmDados.IBQryAlunoNOME.AsString;
DmDados.IBQryAlunoTurmaMATRICULA_ALUNO.Value := DmDados.IBQryAlunoMATRICULA.Value; DmDados.IBQryAlunoTurma.Post; //Vamos ver se só o refresh resolve, caso contrario tem que abrir e fechar a query novamente
DmDados.IBQryAlunoTurma.Refresh;
//Se não funcionar descomente o código abaixo
DmDados.IBQryAlunoTurma.Close;
DmDados.IBQryAlunoTurma.Open;
if rbAutomatica.Checked then
begin
I := 1;
DmDados.IBQryAlunoTurma.First;
while not DmDados.IBQryAlunoTurma.Eof do
begin
DmDados.IBQryAlunoTurma.Edit;
DmDados.IBQryAlunoTurma.FieldByName('numero').AsInteger := I;
Dmdados.IBQryAlunoTurma.Post;
DmDados.IBQryAlunoTurma.Next;
Inc(I);
end;
end
else if rbManual.Checked then
begin
Qry := TIBQuery.Create(nil); {: cria uma instância do objeto}
try
Qry.Database := DmDados.IBDatabase;
Qry.SQL.Add('SELECT MAX(numero)+1 FROM ALUNOTURMA WHERE ESCOLA = :ESCOLA and codigo_turma=:turma');
Qry.Params[0].AsString := DmDados.IBQryAlunoTurmaESCOLA.AsString; // que Guarda a escola
Qry.Params[1].AsInteger := DmDados.IBQryAlunoTurmaCODIGO_TURMA.AsInteger; // que Guarda o codigo da turma;
Qry.Open;
DmDados.IBQryAlunoTurma.Edit;
DmDados.IBQryAlunoTurma.FieldByName('numero').AsInteger := Qry.Fields[0].AsInteger;
Dmdados.IBQryAlunoTurma.Post;
finally
FreeAndNil(Qry); { libera o objeto da memória}
end;
end; BtnNovoAluno.Enabled := not BtnNovoAluno.Enabled;
BtnSalvarAluno.Enabled := not BtnSalvarAluno.Enabled;
BtnCancelarAluno.Enabled := not BtnCancelarAluno.Enabled;
BtnExcluirAluno.Enabled := not BtnExcluirAluno.Enabled;
Panel10.Enabled := false;
Panel12.Enabled := false;
dbgAluno.Enabled := true;
dbEdtMatricula.Enabled := true;
dbEdtAluno.Enabled := true; dbEdtMatricula.Clear;
dbEdtAluno.Clear; (* fecha a Query - após gravaçao o DBGRID fica atualizado*)
DmDados.IBQryAlunoTurma.Close;
(* Reabre a Query - após gravaçao o DBGRID fica atualizado*)
DmDados.IBQryAlunoTurma.Open; PcAluno.ActivePageIndex := 0; end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)