none
Não estou conseguindo atualizar uma tabela usando o OleDbDataAdapter RRS feed

  • Pergunta

  • Senhores

    Tenho um programa que exibe uma tabela em um DataGridView inserido em um Form.

    Uso um DataTable e um DataAdapter para popular o DataGridView.

    Esta parte funciona bem.

    Ocorre que tentei excluir um registro no DataGridView.

    No momento em que fiz isso, pareceu funcionar pois o registro desapareceu do DataGridView.

    No botão usado para fechar o Form, inseri um código para fazer o update da tabela relacionada com o DataTable e o DataAdapter.

    Após esse código dou close no Form.

    Ao reabrir o Form, para minha surpresa, o registro deletado estava lá no DataGridView.

    O que pode estar causando que a deleção feita no DataGridView não seja propagada para a tabela relacionada?

    Grato, desde já

    Homero


    Homero OM


    • Editado HomeroOM sexta-feira, 19 de janeiro de 2018 15:32
    sexta-feira, 19 de janeiro de 2018 15:31

Respostas

  • Olá HomeroOM

    Inverta a ordem para aceitar as atualizações:

    this.DA.AcceptChangesDuringUpdate = true;
    this.DA.Update(this.DS);
    this.DS.AcceptChanges();

     

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    sábado, 20 de janeiro de 2018 17:27

Todas as Respostas

  • Use DateSet no lugar do datatable
    sexta-feira, 19 de janeiro de 2018 15:51
  • Alcides

    Infelizmente não funcionou.

    Abaixo o código referente ao update:

                this.DS.AcceptChanges();
                this.DA.AcceptChangesDuringUpdate = true;
                this.DA.Update(this.DS);

    Alguma outra sugestão?

    Homero


    Homero OM

    sexta-feira, 19 de janeiro de 2018 17:01
  • oi, posta o código de como vc esta detelar o registro, para que possamos analisar

    sexta-feira, 19 de janeiro de 2018 18:30
  • Arlindo

    Não há código.

    Quando eu exibo a tabela no datagridview, simplesmente deleto o registro no datagridview.

    O datagridview mostra a tabela sem o registro deletado.

    No código, antes do comando 'this.DS.AcceptChanges();' a tabela tem n registros.

    Após o comando 'this.DS.AcceptChanges();', a tabela passa a ter n-1 registros.

    Depois de encerrar o procedimento (após o update), ao exibir a tabela de novo, o registro aparece lá de novo.

    Homero


    Homero OM

    sexta-feira, 19 de janeiro de 2018 18:44
  • Olá HomeroOM

    Inverta a ordem para aceitar as atualizações:

    this.DA.AcceptChangesDuringUpdate = true;
    this.DA.Update(this.DS);
    this.DS.AcceptChanges();

     

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    sábado, 20 de janeiro de 2018 17:27
  • Rafael

    Funcionou!

    Muito grato pela ajuda.

    Homero


    Homero OM

    • Marcado como Resposta HomeroOM segunda-feira, 22 de janeiro de 2018 11:45
    • Não Marcado como Resposta Filipe B CastroModerator segunda-feira, 22 de janeiro de 2018 16:12
    segunda-feira, 22 de janeiro de 2018 11:45