StrataFrame Forum

Recuperando mensgens do sqlserver com SF.

http://forum.strataframe.net/Topic14762.aspx

By Valdair Ziegler - 3/10/2008

Olá.

Como posso recuperar as mensagens enviadas pela SqlSever nos BO SF?.

Como exemplo tenho um cadastro de estados e outro de municípios. Vamos imaginar que temos vários estados e municípios cadastrados. Agora vamos imaginar que o usuário vai no cadastro de estados e exclui um estado que contém alguns municípios cadastrados. Obviamente teremos uma violação de chave e o SqlServer vai enviar uma mensagem default. Como que o SF intercepta a mensagem?

Nos BO's ou para evitar a melhor forma seria fazer uma consulta no evento BeforeDelete do BO?

Preciso interceptar nesse instante o mostrar ao usuário uma mensagem criada "Messaging Project".

Valeu, Abraços.

By Ivan George Borges - 3/10/2008

Olá Valdair.

Você tem basicamente duas opções:

Opção  1

Esta lógica deveria na verdade ser parte de sua lógica de exclusão antes deste registro ser deletado.  Crie um "scalar method" (veja no help sobre Scalar) para se certificar de que não há registros nas tabelas relacionadas antes da deleção.  Se há registros filhos que deveriam ser removidos primeiramente, você pode então até mostrar o número de registros que retornar do "scalar method" numa mensagem criada por você.  Isto deveria ser parte da lógica de sua aplicação.

 

Opção 2

Não recomendada, mas você poderia lidar com a exceção e mostrar uma mensagem de erro em vez disto.

By Valdair Ziegler - 3/10/2008

Ok Ivan.  E como que eu consigo capturar uma msg enviada do SqlServer. Por exemplo: Ao excluir um registro o BD dispara uma trigger que verifica se existem registros relacionados. Se existirem cancelo a operação e mando uma msg para o aplicativo, mas a msg, logicamente, vem com um formato default. Quero interceptar nesse momento e mostrar a minha msg criada para o usuário.

grato.

Abraços.

By Ivan George Borges - 3/10/2008

Bom, neste caso você teria que lidar com a "exception". Acho que a maneira mais simples seria colocar um "Try/Catch" em algum lugar em código ao excluir seus registros. Mas se isto se tornar um padrão no seu sistema, você poderá estar incorrendo em alguns problemas de performance.