Fórum dbgrid não mostra os dados após o Post, quem pode ajudar? #392476
15/12/2010
0
Depois de ter implementado o codigo onde estão as linhas do UPDATE o dbgride que está relacionado com a tabela ALUNOTURMA não mostra os dados da tabela, é necessário sair do form e voltar. Vejam abaixo como está o codigo:
procedure TFrmTransfere.DBCtrlGridAlunoTurmaKeyPress(Sender: TObject;
var Key: Char);
begin
if IBQryAlunoTurmaCODIGO.IsNull then
Exit; if (KEY = #32) then
begin if (IBQryAlunoTurmaTRANSFERE.AsString = '.') or (IBQryAlunoTurmaTRANSFERE.IsNull) then
begin
IBQryAlunoTurma.Edit;
IBQryAlunoTurmaTRANSFERE.AsString := 'T';
IBQryAlunoTurma.Post;
IBQryAlunoTurma.Refresh;
end
else if (IBQryAlunoTurmaTRANSFERE.AsString = 'T') then
begin
IBQryAlunoTurma.Edit;
IBQryAlunoTurmaTRANSFERE.AsString := '.';
IBQryAlunoTurma.Post;
IBQryAlunoTurma.Refresh;
end;
end; end; procedure TFrmTransfere.FormShow(Sender: TObject);
begin IBQryTranfere.Close;
IBQryTranfere.Open; IBQryTurmadestino.Close;
IBQryTurmadestino.ParamByName('ESCOLA').AsString := sEscola;
IBQryTurmadestino.Open; IBQryTurma.Close;
IBQryTurma.ParamByName('ESCOLA').AsString := sEscola;
IBQryTurma.Open;
end; procedure TFrmTransfere.DsTurmaDataChange(Sender: TObject; Field: TField);
begin
IBQryAlunoTurma.Close;
IBQryAlunoTurma.parambyname('Escola').AsString := sEscola;
IBQryAlunoTurma.parambyname('turma').AsString := IBQryTurmaCODIGO.AsString;
IBQryAlunoTurma.Open;
end; procedure TFrmTransfere.DBCtrlGridAlunoTurmaDblClick(Sender: TObject);
begin
if (IBQryAlunoTurmaTRANSFERE.AsString = '.') or (IBQryAlunoTurmaTRANSFERE.IsNull) then
begin
IBQryAlunoTurma.Edit;
IBQryAlunoTurmaTRANSFERE.AsString := 'T';
IBQryAlunoTurma.Post;
IBQryAlunoTurma.Refresh;
end
else if (IBQryAlunoTurmaTRANSFERE.AsString = 'T') then
begin
IBQryAlunoTurma.Edit;
IBQryAlunoTurmaTRANSFERE.AsString := '.';
IBQryAlunoTurma.Post;
IBQryAlunoTurma.Refresh;
end;
end; procedure TFrmTransfere.BtnTransfereClick(Sender: TObject);
begin IBQryTranfere.Close;
IBQryTranfere.Parambyname('escola').asstring := sescola;
IBQryTranfere.Parambyname('turma').asstring := IBQryTurmadestinoCODIGO.AsString;
IBQryTranfere.Open;
if IBQryAlunoTurmaTRANSFERE.AsString <> 'T' then
begin
showmessage('Não existem Alunos selecionados para executar a Tranferência!');
exit;
end; //faz a transferencia
IBQryAlunoTurma.first;
while not IBQryAlunoTurma.eof do
begin
if (IBQryAlunoTurmaTRANSFERE.asstring = 'T') then
begin
IBQryTranfere.Insert;
IBQryTranfereCODIGO_TURMA.AsString := IBQryTurmadestinoCODIGO.asstring;
IBQryTranfereNOME_ALUNO.AsString := IBQryAlunoTurmaNOME_ALUNO.asstring;
IBQryTranfereMATRICULA_ALUNO.AsString := IBQryAlunoTurmaMATRICULA_ALUNO.asstring;
IBQryTranfereOBS_FICH_INDIV.AsString := IBQryAlunoTurmaOBS_FICH_INDIV.asstring;
IBQryTranfereOBS_MATRICULA_MEDICA.AsString := IBQryAlunoTurmaOBS_MATRICULA_MEDICA.asstring;
IBQryTranfereNUMERO.AsString := IBQryAlunoTurmaNUMERO.asstring;
IBQryTranfereESCOLA.AsString := IBQryAlunoTurmaESCOLA.asstring;
IBQryTranfereTRANSFERE.AsString := '.';
IBQryTranfere.Post;
end;
IBQryAlunoTurma.Next; end; IBQryAlunoTurma.first; // o problema ocorre após a implementação do UPDATE
begin
with IBQryAlunoTurma do
begin
Active:=False;
SQL.Clear;
SQL.Add('Update alunoturma set transfere = ''.'' WHERE transfere = ''T'' and ESCOLA = :ESCOLA and codigo_turma=:turma');
ExecSQL;
end;
end; Application.MessageBox('Tranferência de Alunos entre Turmas Concluída!','Atenção',mb_ok + MB_ICONWARNING); IBQryAlunoTurma.Close;
IBQryAlunoTurma.Open;
IBQryTranfere.Close;
IBQryTranfere.Open;
IBQryTurma.Close;
IBQryTurma.Open; end; procedure TFrmTransfere.IBQryAlunoTurmaAfterPost(DataSet: TDataSet);
begin
dmdados.IBTransaction.CommitRetaining;
end; procedure TFrmTransfere.FormCreate(Sender: TObject);
begin
IBQryTranfere.Close;
IBQryTranfere.Open;
end; end.
Osmar
Curtir tópico
+ 0Posts
15/12/2010
Leonardo Xavier
IBQryTranfere.Insert; IBQryTranfereCODIGO_TURMA.AsString := IBQryTurmadestinoCODIGO.asstring; IBQryTranfereNOME_ALUNO.AsString := IBQryAlunoTurmaNOME_ALUNO.asstring; IBQryTranfereMATRICULA_ALUNO.AsString := IBQryAlunoTurmaMATRICULA_ALUNO.asstring; IBQryTranfereOBS_FICH_INDIV.AsString := IBQryAlunoTurmaOBS_FICH_INDIV.asstring; IBQryTranfereOBS_MATRICULA_MEDICA.AsString := IBQryAlunoTurmaOBS_MATRICULA_MEDICA.asstring; IBQryTranfereNUMERO.AsString := IBQryAlunoTurmaNUMERO.asstring; IBQryTranfereESCOLA.AsString := IBQryAlunoTurmaESCOLA.asstring; IBQryTranfereTRANSFERE.AsString := '.'; IBQryTranfere.updaterecord; IBQryTranfere.Post;
Gostei + 0
15/12/2010
Douglas Maicon
suaquery.requery
Gostei + 0
15/12/2010
Alex Bahiano
Action:= caFree;
seuform := nil;
no evento close do form, isso se vc estiver usando 2 tabelas no mesmo form.
espero ter ajudado.
Gostei + 0
15/12/2010
Osmar
Gostei + 0
15/12/2010
Osmar
Gostei + 0
16/12/2010
Jose Medeiros
IBQryTranfereCODIGO_TURMA.AsString := IBQryTurmadestinoCODIGO.asstring;
IBQryTranfereNOME_ALUNO.AsString := IBQryAlunoTurmaNOME_ALUNO.asstring;
IBQryTranfereMATRICULA_ALUNO.AsString := IBQryAlunoTurmaMATRICULA_ALUNO.asstring;
IBQryTranfereOBS_FICH_INDIV.AsString := IBQryAlunoTurmaOBS_FICH_INDIV.asstring;
IBQryTranfereOBS_MATRICULA_MEDICA.AsString := IBQryAlunoTurmaOBS_MATRICULA_MEDICA.asstring;
IBQryTranfereNUMERO.AsString := IBQryAlunoTurmaNUMERO.asstring;
IBQryTranfereESCOLA.AsString := IBQryAlunoTurmaESCOLA.asstring;
IBQryTranfereTRANSFERE.AsString := '.'; IBQryTranfere.Post; IBTRANSACTION.COMMITRETAINING;// Alem de salvar via post, para que os dados atualizem no DBGrid precisamos dar o commit. Boa sorte: Jose Luiz
Gostei + 0
16/12/2010
Osmar
while not IBQryAlunoTurma.eof do
begin
if (IBQryAlunoTurmaTRANSFERE.asstring = 'T') then
begin
IBQryTranfere.Insert;
IBQryTranfereCODIGO_TURMA.AsString := IBQryTurmadestinoCODIGO.asstring;
IBQryTranfereNOME_ALUNO.AsString := IBQryAlunoTurmaNOME_ALUNO.asstring;
IBQryTranfereMATRICULA_ALUNO.AsString := IBQryAlunoTurmaMATRICULA_ALUNO.asstring;
IBQryTranfereOBS_FICH_INDIV.AsString := IBQryAlunoTurmaOBS_FICH_INDIV.asstring;
IBQryTranfereOBS_MATRICULA_MEDICA.AsString := IBQryAlunoTurmaOBS_MATRICULA_MEDICA.asstring;
IBQryTranfereNUMERO.AsString := IBQryAlunoTurmaNUMERO.asstring;
IBQryTranfereESCOLA.AsString := IBQryAlunoTurmaESCOLA.asstring;
IBQryTranfereTRANSFERE.AsString := '.';
IBQryTranfere.Post;
dmdados.IBTransaction.CommitRetaining;
end;
IBQryAlunoTurma.Next;
procedure TFrmTransfere.IBQryAlunoTurmaAfterPost(DataSet: TDataSet);
begin
dmdados.IBTransaction.CommitRetaining;
end;
Osmar.
Gostei + 0
16/12/2010
Felipe Caputo
Gostei + 0
17/12/2010
Osmar
begin
Close;
SQL.Clear;
SQL.ADD('Update alunoturma set transfere = ''.'' WHERE transfere = ''T'' and ESCOLA = :ESCOLA and codigo_turma=:turma');
ParamByName('escola').AsInteger := IBQryAlunoTurmaESCOLA.AsInteger;
ParamByName('turma').AsInteger := IBQryAlunoTurmaCODIGO_TURMA.AsInteger;
ExecSQL;
end; agradeço a participação de todos. Osmar.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)