|
Postada em 17/11/2004 11:40 hs
Qual seria a melhor forma de excluir e inserir dados através do ADO? No meu caso eu carrego em um grid os dados em cada linha, depois faço as alterações no grid, como excluo, insiro e assim vai. Depois irei clicar no botão atualizar, essa é minha dúvida, excluo todos os dados que estão guardados e depois insiro um a um no BD os que estão no grid ou, excluo apenas os dados que foram excluidos no grid e assim insiro apenas os que foram inseridos, para isto teria que armazenar em variáveis quais linhas exclui e inseri, correto? Qual seria a melhor escolha? []'s, Marcelo Tamanini
|
|
|
|
|
Postada em 17/11/2004 12:11 hs
Olá Marcelo, Sem dúvida a melhor alternativa é a de excluir todos os registros da tabela e, em seguida, inserir os restantes do grid. Com isso você ganha em termos de codificação, pois é muito mais simples e "limpo" codificar um comando "Delete", e um "Insert" do que ter que armazenar na memória a situação anterior para uma execução dentro de um loop onde os dados seriam comparados. Se vale como dica, todas as aplicações onde utilizo o grid para a manutenção de ítens de registros, utilizo este mecanismo.
|
|
|
|
Postada em 17/11/2004 13:32 hs
Concordo com o Alê...se você for jogar isto em variaveis, vc vai deixar o seu sistema mais lento.
|
|
|
|
Postada em 17/11/2004 14:08 hs
Certo, um exemplo, se eu tiver uma quantidade de registros grande, talvez uns 200 por exemplo, no grid eu excluo uns 40 dos 200 e insiro 20, ficaria no total do grid 180, clico para salvar as modificações, não será mais lento eu excluir os 200 registros e inserir os 180 do que, excluir através de variáveis para saber quais foram excluidos e inserir os 20 registros novos? A 1º opção será mais rápido, correto? []'s, Marcelo Tamanini
|
|
|
|
Postada em 18/11/2004 08:52 hs
up!
|
|
|
|
Postada em 18/11/2004 09:50 hs
Olá Marcelo, bom dia. Mesmo com um volume grande de registros, a execução de um comando "Delete" com a cláusula "Where" identificando os 200 registros que serão excluídos, é infinitamente mais rápido e eficaz do que fazer uma deleção condicional item a item. É óbvio que o comando "Insert" levará um tempo para ser executado, afinal você terá que ler o grid. Neste caso, acredito que o bom senso em relação ao nível de segurança e integridade que você quer que o seu programa tenha, é quem deve determinar qual a melhor estratégia a ser utilizada. Sem dúvida o volume de registros numa operação de "Insert, Update ou Delete" interfere grandemente em performance. Vale saber qual a periodicidade de atualização desta tabela. Se for muito intensa, tudo o que for possível se fazer para obter ganho de performance, deverá ser feito. Tecnicamente falando, numa base de dados MS SQL, com até 1000 registros no grid eu faria o "Delete/Insert". É preciso levar em conta também as validações, possíveis constraints, etc. Cada caso é um caso diferente e merece todo o empenho no que diz respeito a otimização. Um abraço.
|
|
|
|