fkrul 0 Denunciar post Postado Junho 2, 2009 Gente, estou utilizando o Zeos para conectar com Mysql, alguém sabe como fazer o tratamento de exceção, por exemplo quando tento inserir um registro, e dá um erro de chave primária!!, em tempo, tipo passo a passo! Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Junho 2, 2009 Até onde sei, todo tratamento de exceção é feito usando os comandos try except. try <bloco de comandos que deverão ser executados> except <comandos a serem executados em caso de erro em alguma instrução no bloco de comandos entre o try e o except> end; //Final de bloco de comandos protegidos Aqui eu costumo usar essa sintaxe para capturar e mostrar erros. try cmdComando.Execute; except on E : Exception do begin Mensagem('Não foi possível realizar o procedimento no Banco de Dados.' + #13#10 + E.Message); GravaLog(sSQL); GravaLog(E.Message); end; end; Onde: on E : Exception = Ativado quando ocorrem exceções na execução da sql (violação de chave por exemplo) E.Message = Exceção gerada ao tentar executar o sql. cmdComando = TADOCommand GravaLog = Rotina desenvolvida para gravar logs. sSQL = Instrução sql (update, insert, delete) passada por parâmetro para a função. Note que só copiei aqui o trecho referente ao uso do try except, para lhe dar uma idéia de como usar. []'s Compartilhar este post Link para o post Compartilhar em outros sites
fkrul 0 Denunciar post Postado Junho 3, 2009 Abaixo minha função, mas continua dando errado, quando executo, tentando inserir um registro, para dar erro de primary key, aparece uma mensagem Project Pboleto.exe raised exception class EZQLexception with message 'SQL Error: Duplicate entry 'teste' for key 1'. Process stopped. Use Step or Run to Continue. E ai trava tudo! procedure TFReceita.btnGravarClick(Sender: TObject); begin if ( status = 'incluir' ) then begin DMPrincipal.ZQReceita.Active := FALSE; DMPrincipal.ZQReceita.SQL.Clear; DMPrincipal.ZQReceita.SQL.Add('INSERT INTO receita(id_receita,de_receita,fg_ativo) VALUES(''' + txtCodigo.Text + ''',''' + txtDescricao.Text + ''',1)'); try DMPrincipal.ZQReceita.ExecSQL; txtCodigo.Text := ''; txtDescricao.Text := ''; except on E : Exception do begin ShowMessage(E.Message); end; end; end; end; Compartilhar este post Link para o post Compartilhar em outros sites
Daniel Sanches 0 Denunciar post Postado Junho 4, 2009 pelo que entendi que você postou acima, você está debugando seu projeto com (F9) ... assim a exceção não será gerada do jeito que você espera ... você deve compilá-lo gerando o executável e executar o sistema ... se não foi isso que aconteceu, me desculpe, mas pelo erro é o que está parecendo ... qq coisa é só postar ... abraço !! Compartilhar este post Link para o post Compartilhar em outros sites