 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
mydy Novato

Registrado: Terça-Feira, 23 de Agosto de 2011 Mensagens: 4
|
Enviada: Ter Ago 23, 2011 3:03 pm Assunto: Servidor DataSnap com uma função de erros remotos |
|
|
Boa tarde,
estou desenvolvendo uma aplicação em Delphi, usando o Delphi XE, onde tenho um servidor de aplicação - DataSnap-, um cliente e um BD.
Estou à algum tempo pesquisando como implementar no servidor os possíveis erros remotos entre o cliente e o BD, a ideia de criar esses erros remotos seria para não aparecer aquelas mensagens feias para o cliente.
Então a minha ideia seria de criar isso no servidor e toda vez que houvesse o erro, o cliente exibiria a mensagem vinda do servidor de forma adequada.
Alguma ideia de como posso fazer? |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Ter Ago 23, 2011 4:03 pm Assunto: |
|
|
Boa tarde
Não se entendi corretamente, mas acho que você pode colocar o código dos métodos remotos dentro de blocos Try / Except / End, e quando ocorrer uma exceção gerar uma outra exceção com a mensagem desejada. Ex:
| Código: | var
i: integer;
begin
try
i := 10 / 0;
except
raise E.Abort('Erro de divisão por zero');
end;
end; |
Espero que seja útil.
Editado pela última vez por imex em Qua Out 04, 2023 11:15 am, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
mydy Novato

Registrado: Terça-Feira, 23 de Agosto de 2011 Mensagens: 4
|
Enviada: Ter Ago 23, 2011 5:12 pm Assunto: |
|
|
hum... acredito que eu não elucidei o problema corretamente (mas valeu mesmo assim pela resposta).
Deixa eu tentar explicar melhor.
Por exemplo: quando um cliente for inserir um mesmo registro duas vezes, uma descrição, por exemplo, sendo que essa descrição é uma chave única. O Delphi retorna uma mensagem de "violação de chave única", o cliente não sabe o que é uma chave única. Essa mensagem vem do servidor (remote error), pois é ele que se comunica com o BD.
Aí o que eu queria era ter um "controle" desses erros no servidor, pra na hora que o erro ocorresse aparecesse para o usuário uma mensagem de fácil compreensão.
| imex escreveu: | Boa tarde
Não se entendi corretamente, mas acho que você pode colocar o código dos métodos remotos dentro de blocos Try / Except / End, e quando ocorrer uma exceção gerar uma outra exceção com a mensagem desejada. Ex:
| Código: | var
i: integer;
begin
try
i := 10 / 0;
except
raise E.Abort('Erro de divisão por zero');
end;
end; |
Espero que seja útil.
|
|
|
| Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Ter Ago 23, 2011 8:03 pm Assunto: |
|
|
Amigo o servidor não podo emitir mensagens de erros, vc apenas pode capturar os erros do datasnap que ocorrem nas transações.
Eu acho que tenho um demo que pode te ajudar nestas questoes, vou procurar e te arranjo.
No mais aconselho vc a procurar pelos posts de bruno lichot na embarcadero.
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
| Voltar ao Topo |
|
 |
marcosalles Moderador

Registrado: Quarta-Feira, 26 de Março de 2008 Mensagens: 1695 Localização: Muriaé Mg
|
Enviada: Ter Ago 23, 2011 8:52 pm Assunto: |
|
|
| Citação: | Por exemplo: quando um cliente for inserir um mesmo registro duas vezes, uma descrição, por exemplo, sendo que essa descrição é uma chave única. O Delphi retorna uma mensagem de "violação de chave única", o cliente não sabe o que é uma chave única. Essa mensagem vem do servidor (remote error), pois é ele que se comunica com o BD.
Aí o que eu queria era ter um "controle" desses erros no servidor, pra na hora que o erro ocorresse aparecesse para o usuário uma mensagem de fácil compreensão. |
Acredito que este tratamento pode ser feito no clientDataSet no evento onReconcileError .. è so tratar a mensagem ( geralmente utiliza-se o Pos )
e traduza o erro de froma amigável . Ha muito exemplo de tratamentos de erros padrões e suas eventuais Traduções . Isto pode ser feito no client por se algo que não ira mudar e nen faz parte da regra de negócio , afinal Violação da Chave estrangeira sempre serpa Violação de chave estrangeira _________________ http://marcosalles.wordpress.com
Desenvolvo FreeLancer e presto Consultoria
Orientação Online DataSnap DbX ClientDataSet
POO , Padrões de Projeto e dúvidas de Delphi em
Geral |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|