nsouza Postado Dezembro 29, 2009 Denunciar Share Postado Dezembro 29, 2009 Colegas,criei uma procedure, e a mesma funciona muito bem. Mas quando dá uma execessão no delphi aparece uma mensagemno formato nativo, eu gostaria de tratar este mensagem de uma forma mais amigavel para o usuário.A mensagem original é esta:Project Condominio.exe raised exception class TDBXErros whit message'exception 2'E_ACESSO_NEGADOSem permissão para executar esta operaçãoAt procedure'SP_RAISE_ERROR' line: 22, col:12At procedure 'SP_CONDOMINIO_IUD' line : 32, col:3'.Gostaria de mudar isso tudo para :"Usuário sem permissão para executar esta operação"Alguém poderia me dar uma ajuda?CREATE OR ALTER PROCEDURE SP_REISE_ERROR_USUARIO ( pusuario d_id, plogin d_login, pemail d_email)asdeclare variable v_count integer;begin /* verifica se o usuário tem os acesso necessários*/ select count(1) from acessos where usuarioid = :pusuario and FORMULARIO = 'CADASTRO DE USUÁRIOS' and incluir = 'S' into :v_count; if (v_count = 0) then begin exception E_ACESSO_NEGADO; end/*************** verifica se o login já existe *********************/ SELECT count(1) FROM USUARIOS WHERE login = :plogin INTO :V_COUNT; if (:V_COUNT > 0) then BEGIN exception e_login_existe; END/****************** verifica se o login já existe ******************/ SELECT count(1) FROM USUARIOS WHERE email = :pemail INTO :V_COUNT; if (:V_COUNT > 0) then BEGIN exception E_EMAIL_EXITE; ENDend Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Dezembro 29, 2009 Denunciar Share Postado Dezembro 29, 2009 quando dá uma execessão no delphi aparece uma mensagemno formato nativo, eu gostaria de tratar este mensagem de uma forma mais amigavel para o usuário.Material para pesquisa sobre o assunto:http://www.planetadelphi.com.br/dica/6544/...s%20procedures)http://www.devmedia.com.br/articles/viewcomp.asp?comp=3102http://www.firebase.com.br/fb/imgdocs/Trat...TrataExcept.pdfhttp://www.linhadecodigo.com.br/Artigo.aspx?id=505http://www.scribd.com/doc/7085788/Guia-Do-...ivro-CompletoBRhttp://www.susviela.hpg.com.br/delphi/delphi/mensagens.htmabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nsouza Postado Dezembro 30, 2009 Autor Denunciar Share Postado Dezembro 30, 2009 Caro Jhonas,obrigado pelo material,meu problema agora é quando executo a procedure abaixo, da a mensagem de erro:'unknown ISC error 0'procedure TDM.Cds_CondominioBeforePost(DataSet: TDataSet);varloSp : TSQLStoredProc;begin try try loSp:= TSQLStoredProc.Create(self); loSp.SQLConnection := DBAcesso; loSp.StoredProcName := 'SP_CONDOMINIO_IUD'; loSp.ParamByName('PCONDOMINIOID' ).AsInteger := Cds_CondominioCONDOMINIOID.AsInteger; loSp.ParamByName('PNOME' ).AsString := Cds_CondominioNOME.AsString; loSp.ParamByName('PENDERECO' ).AsString := Cds_CondominioENDERECO.AsString; loSp.ParamByName('PNUMERO' ).AsInteger := Cds_CondominioNUMERO.AsInteger; loSp.ParamByName('PCOMPLEMENTO' ).AsString := Cds_CondominioCOMPLEMENTO.AsString; loSp.ParamByName('PBAIRRO' ).AsString := Cds_CondominioBAIRRO.AsString; loSp.ParamByName('PCIDADE' ).AsString := Cds_CondominioCIDADE.AsString; loSp.ParamByName('PESTADO' ).AsString := Cds_CondominioESTADO.AsString; loSp.ParamByName('PCEP' ).AsString := Cds_CondominioCEP.AsString; loSp.ParamByName('PEMAIL' ).AsString := Cds_CondominioEMAIL.AsString; loSp.ParamByName('PSINDICO' ).AsString := Cds_CondominioSINDICO.AsString; loSp.ParamByName('PTELEFONE' ).AsString := Cds_CondominioTELEFONE.AsString; loSp.ParamByName('PCELULAR' ).AsString := Cds_CondominioCELULAR.AsString; loSp.ParamByName('PQTDEAPT' ).AsInteger := Cds_CondominioQTDEAPT.AsInteger; loSp.ParamByName('PAPTINICIAL' ).AsInteger := Cds_CondominioAPTINICIAL.AsInteger; loSp.ParamByName('PAPTFINAL' ).AsInteger := Cds_CondominioAPTFINAL.AsInteger; loSp.ParamByName('PINICIOCONTRATO' ).AsDate := Cds_CondominioINICIOCONTRATO.AsDateTime; loSp.ParamByName('PFIMCONTRATO' ).AsDate := Cds_CondominioFIMCONTRATO.AsDateTime; loSp.ParamByName('PVLRCONDOMINIO' ).AsFloat := Cds_CondominioVLRCONDOMINIO.AsFloat; loSp.ParamByName('PVENCIMENTO' ).AsInteger := Cds_CondominioVENCIMENTO.AsInteger; loSp.ParamByName('POPR' ).AsString := 'I'; loSp.ParamByName('PUSUARIO' ).AsInteger := 1; loSp.ExecProc; except On E: Exception do ShowMessage('Erro ao executar stored procedure' + E.Message ) end; finally FreeAndNil(loSp); end;end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Dezembro 30, 2009 Denunciar Share Postado Dezembro 30, 2009 meu problema agora é quando executo a procedure abaixo, da a mensagem de erro:'unknown ISC error 0'Essa mensagem de erro ocorre porque houve erro na conversão de tipos loSp.ParamByName('PINICIOCONTRATO' ).AsDate := Cds_CondominioINICIOCONTRATO.AsDateTime;loSp.ParamByName('PFIMCONTRATO' ).AsDate := Cds_CondominioFIMCONTRATO.AsDateTime;o correto serialoSp.ParamByName('PINICIOCONTRATO' ).AsDate := Cds_CondominioINICIOCONTRATO.AsDate;loSp.ParamByName('PFIMCONTRATO' ).AsDate := Cds_CondominioFIMCONTRATO.AsDate;abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nsouza Postado Dezembro 30, 2009 Autor Denunciar Share Postado Dezembro 30, 2009 meu problema agora é quando executo a procedure abaixo, da a mensagem de erro:'unknown ISC error 0'Essa mensagem de erro ocorre porque houve erro na conversão de tipos loSp.ParamByName('PINICIOCONTRATO' ).AsDate := Cds_CondominioINICIOCONTRATO.AsDateTime;loSp.ParamByName('PFIMCONTRATO' ).AsDate := Cds_CondominioFIMCONTRATO.AsDateTime;o correto serialoSp.ParamByName('PINICIOCONTRATO' ).AsDate := Cds_CondominioINICIOCONTRATO.AsDate;loSp.ParamByName('PFIMCONTRATO' ).AsDate := Cds_CondominioFIMCONTRATO.AsDate;abraçoJhonas, estava assim, do jeito que você disse, mas da a mensagem de erro quando parou com o mouse por cima "Erroneous type"só aparace para mim .AsDateTime; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Dezembro 30, 2009 Denunciar Share Postado Dezembro 30, 2009 Jhonas, estava assim, do jeito que você disse, mas da a mensagem de erro quando parou com o mouse por cima "Erroneous type" só aparace para mim .AsDateTime;então verifique a definição do campo da sua tabela .. se voce definiu como TimeStamp então terá que usar .AsDateTime; nesse caso ficaria assim:loSp.ParamByName('PINICIOCONTRATO' ).AsDateTime := Cds_CondominioINICIOCONTRATO.AsDateTime;loSp.ParamByName('PFIMCONTRATO' ).AsDateTime := Cds_CondominioFIMCONTRATO.AsDateTime;abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nsouza Postado Dezembro 30, 2009 Autor Denunciar Share Postado Dezembro 30, 2009 Jhonas, estava assim, do jeito que você disse, mas da a mensagem de erro quando parou com o mouse por cima "Erroneous type" só aparace para mim .AsDateTime;então verifique a definição do campo da sua tabela .. se voce definiu como TimeStamp então terá que usar .AsDateTime; nesse caso ficaria assim:loSp.ParamByName('PINICIOCONTRATO' ).AsDateTime := Cds_CondominioINICIOCONTRATO.AsDateTime;loSp.ParamByName('PFIMCONTRATO' ).AsDateTime := Cds_CondominioFIMCONTRATO.AsDateTime;abraçoPior que não, o dominio da minha tabela é D_Date type Date Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Dezembro 30, 2009 Denunciar Share Postado Dezembro 30, 2009 "Erroneous type" só aparace para mim .AsDateTime;Erro de tipo .... verifique ou troque por outro tipoabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
nsouza
Colegas,
criei uma procedure, e a mesma funciona muito bem. Mas quando dá uma execessão no delphi aparece uma mensagem
no formato nativo, eu gostaria de tratar este mensagem de uma forma mais amigavel para o usuário.
A mensagem original é esta:
Project Condominio.exe raised exception class TDBXErros whit message'exception 2'
E_ACESSO_NEGADO
Sem permissão para executar esta operação
At procedure'SP_RAISE_ERROR' line: 22, col:12
At procedure 'SP_CONDOMINIO_IUD' line : 32, col:3'.
Gostaria de mudar isso tudo para :
"Usuário sem permissão para executar esta operação"
Alguém poderia me dar uma ajuda?
CREATE OR ALTER PROCEDURE SP_REISE_ERROR_USUARIO (
pusuario d_id,
plogin d_login,
pemail d_email)
as
declare variable v_count integer;
begin
/* verifica se o usuário tem os acesso necessários*/
select count(1)
from acessos
where usuarioid = :pusuario
and FORMULARIO = 'CADASTRO DE USUÁRIOS'
and incluir = 'S'
into :v_count;
if (v_count = 0) then
begin
exception E_ACESSO_NEGADO;
end
/*************** verifica se o login já existe *********************/
SELECT count(1)
FROM USUARIOS
WHERE login = :plogin
INTO :V_COUNT;
if (:V_COUNT > 0) then
BEGIN
exception e_login_existe;
END
/****************** verifica se o login já existe ******************/
SELECT count(1)
FROM USUARIOS
WHERE email = :pemail
INTO :V_COUNT;
if (:V_COUNT > 0) then
BEGIN
exception E_EMAIL_EXITE;
END
end
Link para o comentário
Compartilhar em outros sites
7 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.