nsouza Postado Julho 25, 2009 Denunciar Share Postado Julho 25, 2009 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Daniel Sanches Postado Julho 26, 2009 Denunciar Share Postado Julho 26, 2009 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 !!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nsouza Postado Julho 26, 2009 Autor Denunciar Share Postado Julho 26, 2009 (editado) 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 Julho 26, 2009 por nsouza Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Daniel Sanches Postado Julho 26, 2009 Denunciar Share Postado Julho 26, 2009 (editado) 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 --> ???beginselecao; --> ???endelsebeginlimpa; --> ???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 Julho 26, 2009 por Daniel Sanches Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nsouza Postado Julho 27, 2009 Autor Denunciar Share Postado Julho 27, 2009 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)beginselecao; --> ??? (Expliquei na linha acima)endelsebeginlimpa; --> ??? (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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Daniel Sanches Postado Julho 28, 2009 Denunciar Share Postado Julho 28, 2009 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 !!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nsouza Postado Julho 28, 2009 Autor Denunciar Share Postado Julho 28, 2009 Daniel muito obrigado!(Resolvido) Personalizer mensagem. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Raficcha Postado Julho 29, 2009 Denunciar Share Postado Julho 29, 2009 (editado) 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 Julho 29, 2009 por Raficcha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nsouza Postado Julho 29, 2009 Autor Denunciar Share Postado Julho 29, 2009 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 problemasobrigado pela correção! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
nsouza
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
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.