Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Personalizar mensagem


nsouza

Pergunta

Colegas,

toda fez que gero um registro e ele duplica a chave primaria, logicamente da uma mensagem de erro.

Como faço para definir uma mensagem para o usuario ao invés de usar a mensagem do banco de dados

quem exibe toda em ingles para o usuario.

Estou usando o mysql.

Obrigado!

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Caro Daniel,

O codigo que estou usando no botão confirmar quando da a mensagem de erro é esse.

A forma de tratar o erro seria a mesma? Pode dar um exemplo neste codigo para mim?

procedure TF_Morador.btnConfirmarClick(Sender: TObject);

begin

// Força preechimento de campos

if Length(trim(edtNome.Text)) = 0 then

begin

Application.MessageBox('O campo Nome é obrigatório','SAC - Campo vazio',MB_OK + MB_ICONINFORMATION);

edtNome.setfocus;

exit;

end;

if Length(trim(edtApt.Text)) = 0 then

begin

Application.MessageBox('O campo Número do Apt é obrigatório','SAC - Campo vazio',MB_OK + MB_ICONINFORMATION);

edtapt.setfocus;

exit;

end;

if Length(trim(cbCondominio.Text)) = 0 then

begin

Application.MessageBox('O campo Nome do Condomínio é obrigatório','SAC - Campo vazio',MB_OK + MB_ICONINFORMATION);

cbCondominio.setfocus;

exit;

end;

if Length(trim(cbTipoMorador.Text)) = 0 then

begin

Application.MessageBox('O campo Tipo de Morador é obrigatório','SAC - Campo vazio',MB_OK + MB_ICONINFORMATION);

cbTipoMorador.setfocus;

exit;

end;

Inicia o processo para salvar no banco de dados

dm.Q_Morador.Close;

grava;

dm.Cds_Morador.Post;

dm.Cds_Morador.ApplyUpdates(-1);

PanGrid.BringToFront;

liberaPesquisa;

if confira = 2 then

begin

selecao;

end

else

begin

limpa;

PanTitulo.Caption:='Cadastro de Moradors - Consultando';

dm.Cds_Morador.Close;

dm.Cds_Morador.open;

end;

leitura;

end;

Editado por nsouza
Link para o comentário
Compartilhar em outros sites

  • 0

bom, é o seguinte ... depende muito o que você quer, mas dentro try...except, você coloca o código que deseja que seja executado SEM exceções ... entre o except...end, você coloca o código que deseja executar caso ocorra alguma exceção entre os comandos do try...except.

eu teria que saber melhor sobre suas funções pra te dar um exemplo melhor:

dm.Q_Morador.Close;

grava; --> o que essa função faz exatamente ???

dm.Cds_Morador.Post;

dm.Cds_Morador.ApplyUpdates(-1);

PanGrid.BringToFront;

liberaPesquisa; --> ???

if confira = 2 then --> ???

begin

selecao; --> ???

end

else

begin

limpa; --> ???

PanTitulo.Caption:='Cadastro de Moradors - Consultando';

dm.Cds_Morador.Close;

dm.Cds_Morador.open;

end;

leitura; --> ???

mas você deverá fazer algo assim:

try
   ...comandos que deseja executar...
   ...comandos que deseja executar...
except on E: Exception do
   begin
      ...comandos que deseja executar caso tenha ocorrido alguma exceção nos comandos entre try...except
   end;
end;

abraços !!!

Editado por Daniel Sanches
Link para o comentário
Compartilhar em outros sites

  • 0

dm.Q_Morador.Close;

grava; --> o que essa função faz exatamente ??? ( Procedure que pega o texto dos Edits, maskedits e combos para salvar no banco de dados)

dm.Cds_Morador.Post;

dm.Cds_Morador.ApplyUpdates(-1);

PanGrid.BringToFront;

liberaPesquisa; --> ??? (Procedure que desabilita tres Radiobuttons)

if confira = 2 then --> ??? (Condição para executar a procedure selecao, que seleciona um registro e mostra numa grid apos confirmar os dados)

begin

selecao; --> ??? (Expliquei na linha acima)

end

else

begin

limpa; --> ??? (Procedure que limpa todos os Edits, maskedits e combos após clicar no botão confirmar)

PanTitulo.Caption:='Cadastro de Moradors - Consultando';

dm.Cds_Morador.Close;

dm.Cds_Morador.open;

end;

leitura; --> ??? (Procedure que coloca os edits no modo leitura e os botões no modo Enabled := false)

Espero ter ajudado a entender, caso contrario sinta-se a vontade em me retornar.

Link para o comentário
Compartilhar em outros sites

  • 0

bom, retornando a razão do tópico, já que o seu problema principal está na mensagem de KeyViolation, então você colocaria o comando try...except no seguinte local:

grava; --> o que essa função faz exatamente ??? ( Procedure que pega o texto dos Edits, maskedits e combos para salvar no banco de dados)
try 
   dm.Cds_Morador.Post;
   dm.Cds_Morador.ApplyUpdates(-1);
except on E: Exception do
   begin
      MessageDlg('Erro ao salvar o registro.'+#13+#13+E.Message,mtError,[mbOk],0);
      dm.Cds_Morador.CancelUpdates;
   end;
end;

faça um teste aí ... qualquer coisa é só postar ....

abraços !!!

Link para o comentário
Compartilhar em outros sites

  • 0
já tentou o try...except ??

try TABELA.Post;
except on E: Exception do
   begin
      MessageDlg('Erro ao salvar o registro.'+#13+#13+E.Message,mtError,[mbOk],0);
      TABELA.CancelUpdates;
   end;
end;

abraços !!!

Nota, para quebrar (enter) os caracteres corretos são #13#10 (Carriage Return + Line feed ) e não #13#13 (Carriage return + Carriage return)

MessageDlg('Erro ao salvar o registro.'+#13+#10+E.Message,mtError,[mbOk],0);

Ow, desculpe-me por esta correção, mas é que futuramente algum podem acabar copiando e tendo problemas

Editado por Raficcha
Link para o comentário
Compartilhar em outros sites

  • 0
já tentou o try...except ??

try TABELA.Post;
except on E: Exception do
   begin
      MessageDlg('Erro ao salvar o registro.'+#13+#13+E.Message,mtError,[mbOk],0);
      TABELA.CancelUpdates;
   end;
end;

abraços !!!

Nota, para quebrar (enter) os caracteres corretos são #13#10 (Carriage Return + Line feed ) e não #13#13 (Carriage return + Carriage return)

MessageDlg('Erro ao salvar o registro.'+#13+#10+E.Message,mtError,[mbOk],0);

Ow, desculpe-me por esta correção, mas é que futuramente algum podem acabar copiando e tendo problemas

obrigado pela correção!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...