Inquiridor
Como saber se houve mudanças em uma determinada tabela.

Discussão Geral
-
Olá pessoal,
Gostaria de saber, se existe algum comando para verificar, se houve alguma mudança em uma determinada tabela, ou seja se algum registro foi inserido, alterado ou excluído, estou tentando usar um comando mas não está dando certo, estou fazendo essa rotina, mas está dando erro de compilação.
DataSet dts = new DataSet()
if ( dts.Tables["Contatos"].HasChanges() )
{
messagebox("houve mudança na tabela");
}
Windows Form, MySQL, C#
- Tipo Alterado Filipe B CastroModerator quinta-feira, 30 de novembro de 2017 16:58
Todas as Respostas
-
Olá!
Você quer saber se houveram mudanças direto no banco de dados ou se os dados que você carregou em memória foram modificados? Se for a primeira opção, acredito que não seja possível ser feito no nível da aplicação.. Já se for a segunda opção, você está no caminho certo.. Qual é o erro de compilação que você recebeu?
Abraço!
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima -
Olá Andre,
Quero saber se os dados carregados em memória, foram modificados, na rotina abaixo, HasChanges aparece grifado com vermelho, achei que tivesse faltando incluir alguma lib clicando com direito sobre HasChanges e selecionando Resolver, mas não aparece essa opção.
if ( dts.Tables["Contatos"].HasChanges() )
Erro:
System.Data.DataTable does not contain a definition for 'HasChanges' and no extension method 'HasChanges' accepting a first argument of type 'System.Data.DataTable' could be found (are you missing a using directive or an assembly reference ?)
-
Olá!
O que acontece é que o método "HasChanges" pertence ao DataSet, e não à DataTable.. Para saber se existe alterações pendentes em uma determinada tabela, você precisa executar um GetChanges nela e verificar se o conteúdo retornado é diferente de nulo..
Exemplo:
var alteracoes = dts.Tables["Contatos"].GetChanges(); var foiAlterado = alteracoes != null && alteracoes.Rows.Count > 0;
Abraço!
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima -
Perfeito AndreAlvesLima,
Só para complementar Porter, isso deve ser feito antes de aplicar um AcceptChanges, pois depois todas as modificações serão aplicadas e não mais retornarão com GetChanges.
Antero Marques
_____________________________________________________________________________
Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta. O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.
- Editado Antero Marques sexta-feira, 1 de dezembro de 2017 11:36
-
Sem dúvida, Antero.. Uma vez chamado um AcceptChanges, aí as alterações pendentes são confirmadas em memória, o que torna impossível a utilização de um GetChanges depois desse ponto..
Abraço!
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima