Fórum dbgrid não mostra os dados após o Post, quem pode ajudar? #392476

15/12/2010

0

Amigos,

             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

Osmar

Responder

Posts

15/12/2010

Leonardo Xavier

tente assim:

        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;



Responder

Gostei + 0

15/12/2010

Douglas Maicon

Tente dar um requery depois que vc faz o post
suaquery.requery
Responder

Gostei + 0

15/12/2010

Alex Bahiano

Oi, vc usa 2 tabelas diferentes no mesmo form? sou bem novato, mas aqui aconteceu comigo isso, era porque o form ficava na memoria, e só aparecia os dados quando eu fechava e voltava tbm, o que fiz foi um

Action:= caFree;
seuform := nil;

no evento close do form, isso se vc estiver usando 2 tabelas no mesmo form.
espero ter ajudado.
Responder

Gostei + 0

15/12/2010

Osmar

Amigos,                  Nenhum dos casos resolveu, e quanto a dica do amigo Dogão o Delphi não reconheceu requery.              Desculpe-me não ter informado corretamente os não aparecem não é no dbgrid e sim no DBCtrlGrid.   Osmar.
Responder

Gostei + 0

15/12/2010

Osmar

Amigos,                  Nenhum dos casos resolveu, e quanto a dica do amigo Dogão o Delphi não reconheceu requery.              Desculpe-me não ter informado corretamente os dados não aparecem não é no dbgrid e sim no DBCtrlGrid.   Osmar.
Responder

Gostei + 0

16/12/2010

Jose Medeiros

Colega,   Pelo que  entendi, vc esta usando componentes da aba interbase:             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;           IBTRANSACTION.COMMITRETAINING;//            Alem de salvar via post, para que os dados atualizem no DBGrid precisamos dar o commit.   Boa sorte: Jose Luiz

Responder

Gostei + 0

16/12/2010

Osmar

Amigo José Luiz,                        Implementei o código sugerido, mas não funcionou. Também observe que já existe no código um commit, acrescento ainda que a ibqrytransfere está usando o commit da IBQryAlunoTurmaAfterPost.       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;
          dmdados.IBTransaction.CommitRetaining;
        end;
      IBQryAlunoTurma.Next;
  procedure TFrmTransfere.IBQryAlunoTurmaAfterPost(DataSet: TDataSet);
begin
  dmdados.IBTransaction.CommitRetaining;
end;
Osmar.
Responder

Gostei + 0

16/12/2010

Felipe Caputo

tente dar um close / open na query (ou requery) e depois um refresh no dbgrid. Do jeito que isso aí tá estranho pode ser até q resolva
Responder

Gostei + 0

17/12/2010

Osmar

Amigos,             Todo problema estava na falta dos parametros que nao foram passados após a linha do UPDATE, vejam como ficou:     with Alunoturma do
    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.
Responder

Gostei + 0

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

Aceitar