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

Tratar erro de procedure no desenvolvimento


nsouza

Pergunta

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

  • 0
Link para o comentário
Compartilhar em outros sites

  • 0

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);

var

loSp : 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;

Link para o comentário
Compartilhar em outros sites

  • 0
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 seria

loSp.ParamByName('PINICIOCONTRATO' ).AsDate := Cds_CondominioINICIOCONTRATO.AsDate;

loSp.ParamByName('PFIMCONTRATO' ).AsDate := Cds_CondominioFIMCONTRATO.AsDate;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
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 seria

loSp.ParamByName('PINICIOCONTRATO' ).AsDate := Cds_CondominioINICIOCONTRATO.AsDate;

loSp.ParamByName('PFIMCONTRATO' ).AsDate := Cds_CondominioFIMCONTRATO.AsDate;

abraço

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;

Link para o comentário
Compartilhar em outros sites

  • 0
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

Link para o comentário
Compartilhar em outros sites

  • 0
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

Pior que não, o dominio da minha tabela é D_Date type Date

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,2k
    • Posts
      651,9k
×
×
  • Criar Novo...