Fórum Deletar cadastros e vincular movimentações vinculadas a outro registro #421356

09/08/2012

0

Galera

Tenho uma tela CadPadrao, onde herdo ela para todos os cadastros.
Funciona perfeitamente, Insert, Edit, Delete, pesquisa etc.
Porém quanto vou deletar por exemplo um produto que já tem movimentações vinculadas, eu tive que criar um código próprio para produtos, para procurar um novo produto para substituir o que está sendo deletado.
         if Application.MessageBox(PChar(Erro: Registro deve estar vínculado a alguma movimentação! + #13 + Deseja substituir as movimentações desse código por outro?), PChar(NomeSistema), MB_YESNO + MB_ICONQUESTION) = mrYes then
         begin
             CodigoPesquisa := Pesquisa(View, CampoID);
             if CodigoPesquisa   then
             begin
                if Tabela = CADPRODUTOS_SERVICOS then
                begin
                   ExecutarSQL(update movnotasfiscais_itens set id_produto_servico =  + QuotedStr(CodigoPesquisa)+  where id_produto_servico =  + QuotedStr(cdsMaster.FieldByName(CampoID).AsString) +  and id_empresa =  + IntToStr(CodigoEmpresa));
                end;
                cdsMaster.Delete;
                cdsMaster.ApplyUpdates(0);
             end;
         end;


Como é uma tela genérica, queria saber se tem uma maneira de fazer a mudança sem precisar fazer update de tabela em tabela que necessite do produto.

Aguardo
Huelbert Oliveira

Huelbert Oliveira

Responder

Posts

09/08/2012

Joel Rodrigues

Rapaz, nesse caso eu sugiro que você use um trigger nessa tabela que, quando o campo em questão for alterado, atualize todas as demais tabelas que usam esse produto.
Responder

Gostei + 0

09/08/2012

Huelbert Oliveira

mesmo na trigger eu não consigo mudar as movimentações para outro produto.
queria um código que atualiza todas as tabelas sem precisar setar uma por uma.
Responder

Gostei + 0

09/08/2012

Joel Rodrigues

Vixe, cara, aí fica meio difícil. Você quer atualizar todas as tabelas que utilizem esse campo?

Acho que para isso você precisaria fazer uma pesquisa nos objetos do banco e localizar todas as tabelas que contém esse campo. Depois gerar um script pra cada uma e executar (a partir doo Delphi).

Não acho que seja viável. Generalizar é bom, mas tem limites. Com isso você pode acabar tendo confusões no futuro.
Responder

Gostei + 0

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

Aceitar