ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Servidor DataSnap com uma função de erros remotos

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
mydy
Novato
Novato


Registrado: Terça-Feira, 23 de Agosto de 2011
Mensagens: 4

MensagemEnviada: Ter Ago 23, 2011 3:03 pm    Assunto: Servidor DataSnap com uma função de erros remotos Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Ago 23, 2011 4:03 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
mydy
Novato
Novato


Registrado: Terça-Feira, 23 de Agosto de 2011
Mensagens: 4

MensagemEnviada: Ter Ago 23, 2011 5:12 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Ter Ago 23, 2011 8:03 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
marcosalles
Moderador
Moderador


Registrado: Quarta-Feira, 26 de Março de 2008
Mensagens: 1695
Localização: Muriaé Mg

MensagemEnviada: Ter Ago 23, 2011 8:52 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB