Alvaro;

 

Aqui nos tratamos os erros da seguinte forma, utilizando Oracle, mas acredito que deva funcionar para qualquer BD:

 

Na Se��o:

 

Application Action

On SAM_SqlError

����������� ����������� Call fTrataErro(� )

����������� ����������� Return 0

 

Na Se��o :

 

Internal Function

Function: fTrataErro

����������� Description:

����������� Returns

����������� Parameters

����������� Static Variables

����������� Local variables

����������������������� Number: nCodErro

����������������������� Number: nPosErro

����������������������� String: sErroOracle

����������������������� String: sMsgErro

����������������������� Sql Handle: hsqlErro

����������������������� String: sTemp

����������� Actions

����������������������� Call SqlExtractArgs( wParam, lParam, hsqlErro, nCodErro, nPosErro )

����������������������� Call SqlGetError( hsqlErro, nCodErro, sErroOracle )

����������������������� If nCodErro < 0

���������������������������������� Set nCodErro = nCodErro * (-1)

����������������������� Set sMsgErro = "Ocorreu a seguinte exce��o: "

����������������������� If nCodErro = 21017

���������������������������������� Set sMsgErro = sMsgErro ||

���������������������������������������������������������� "

���������������������������������������������������������� Usu�rio/Password Inv�lido

���������������������������������������������������������� Procedimento :

���������������������������������������������������������� Corrija Usu�rio/Password e tente novamente"

����������������������� Else If nCodErro = 942

���������������������������������� Set sMsgErro = sMsgErro ||

���������������������������������������������������������� "

���������������������������������������������������������� Tabela ou vis�o n�o existe

���������������������������������������������������������� Procedimento :

���������������������������������������������������������� � poss�vel que voc� n�o tenha permiss�o para fazer tal opera��o.

���������������������������������������������������������� Consulte o respons�vel pelo sistema e comunique o ocorrido"

����������������������� Else If nCodErro = 1400

���������������������������������� Set sMsgErro = sMsgErro ||

���������������������������������������������������������� "

���������������������������������������������������������� Campo obrigat�rio n�o foi preenchido

���������������������������������������������������������� Procedimento :

���������������������������������������������������������� Preencha todos os campos que s�o obrigat�rios e tente novamente.

���������������������������������������������������������� Se o problema persistir, comunique ao respons�vel pelo sistema"

����������������������� Else If nCodErro = 1

���������������������������������� Set sMsgErro = sMsgErro ||

���������������������������������������������������������� "

���������������������������������������������������������� Tentativa de inserir registro duplicado

���������������������������������������������������������� Procedimento :

���������������������������������������������������������� J� existe um registro com as mesmas caracter�sticas que se est� tentando inserir ou atualizar.

���������������������������������������������������������� Esta opera��o n�o � permitida"

����������������������� Else If nCodErro = 2291

���������������������������������� Set sMsgErro = sMsgErro ||

���������������������������������������������������������� "

���������������������������������������������������������� Regra de relacionamento violada na tentativa de inserir ou atualizar o registro

���������������������������������������������������������� Procedimento :

���������������������������������������������������������� Um ou mais campos est�o relacionados com outras tabelas.

���������������������������������������������������������� Somente valores pr�viamente cadastrados s�o permitidos nestes campos"

����������������������� Else If nCodErro = 2292

���������������������������������� Set sMsgErro = sMsgErro ||

���������������������������������������������������������� "

���������������������������������������������������������� Regra de integridade violada na remo��o do registro

���������������������������������������������������������� Procedimento :

���������������������������������������������������������� Um ou mais campos est�o relacionados com outras tabelas.

���������������������������������������������������������� Esta opera��o n�o � permitida"

����������������������� Else If nCodErro = 2290

���������������������������������� Set sMsgErro = sMsgErro ||

���������������������������������������������������������� "

���������������������������������������������������������� Regra de valida��o de campos violada

���������������������������������������������������������� Procedimento :

���������������������������������������������������������� Um ou mais campos est�o fora da faixa permitida. Corrija e tente novamente"

����������������������� Else If nCodErro = 1031

���������������������������������� Set sMsgErro = sMsgErro ||

���������������������������������������������������������� "

���������������������������������������������������������� Privil�gio insuficiente

���������������������������������������������������������� Procedimento :

���������������������������������������������������������� Voc� n�o tem privil�gio para efeturar essa transa��o.

���������������������������������������������������������� Contacte o CPD para rever seus privil�gios"

����������������������� Else If nCodErro = 54

���������������������������������� Set sMsgErro = sMsgErro ||

���������������������������������������������������������� "

���������������������������������������������������������� Os dados que voc� est� tentando acessar foram bloqueados temporariamente.

���������������������������������������������������������� Procedimento :

���������������������������������������������������������� Tente executar novamente a opera��o desejada (Incluir, atualizar,excluir...) dentro de alguns segundos."

����������������������� Else If nCodErro = 2396

���������������������������������� Call SalMessageBox( "Sua Sess�o Expirou o tempo sem atividade. Reinicie a aplica��o", "Erro !", MB_Ok | MB_IconHand )

���������������������������������� Call SalQuit(� )

����������������������� Else

���������������������������������� Set sTemp = fGetMsgEntreStrings( sErroOracle, '[', ']' )

���������������������������������� If sTemp = sErroOracle

���������������������������������������������� Set sMsgErro =

���������������������������������������������������������������������� "Ocorreu um erro desconhecio, reporte a seguinte mensagem ao CPD :

���������������������������������������������������������������������� " || sErroOracle

���������������������������������� Else

���������������������������������� Set sMsgErro = sTemp

����������������������� Call SalMessageBox( sMsgErro, "Erro !", MB_Ok | MB_IconHand )

 

-----Mensagem original-----
De: Alvaro [mailto:[EMAIL PROTECTED]]
Enviada em: ter�a-feira, 24 de setembro de 2002 00:11
Para: Lista Centura
Assunto: [sqlwin] DLLs / Rotina de Erro

 

Pessoal tenho 2 perguntas a fazer:

 

1) Coloquei essa pergutna na lista e s� recebi 1 resposta, estou falando isso porque acho que n�o entederam o que perguntei e tamb�m pelo fato de ser super des�gradavel para o usu�rio ler uma mensagem de erro em ingl�s, passa a impress�o que n�o temos o controle de toda situa��o, por esse motivo quero fazer uma rotina de erro. Mas ai vai, preciso criar uma rotina de erro para o SqlServer2000 ent�o pensei em algo mais ou menos assim: Pego no help do SqlServer ou em um tabela todos os erros, ou seja, quando falo em erros s�o os n�meros e as mensagem, e trato-los Centura, mas uma coisa n�o entendi ainda, o erro � disparado do SqlServer passa pelas dlls ( n�o sei bem se s�o DLLs ) do ODBC e depois � tratado no Centura, � isso ? Estou falando isso pois comparei o n�mero do erro gerado no Centura com o do SqlServer e s�o diferentes.Mas quando ocorre algum erro de banco no Centura aparece uma janela com as seguintes caracteristicas, e acho que todos aqui devem saber de cor e salteado ( risos ) ala Vinicus

T�tulo: Centura Buider - SqlError em baixo est� escrito Sql Stament com a instru��o que n�o foi processada, em baixo de novo aparece outro texto ali contendo o erro original do SqlServer, ao lado existe 2 campos Number: e Position e em baixo de tudo tem uma descri�ao de uma prov�vel solu��o !

Concluindo preciso do erro original do Banco, ou se algu�m tiver alguma a rotina para me mandar agradecerei.Houve um integrante acho que � o Andreson Martins que me mandou uma em Oracle que aproveito tamb�m para agrade-lo e dizer que n�o entendi muito bem a dele, mas continuo estudando-a.

2) Estou precisando de algumas dlls, que est�o discriminadas em algumas alps como: CICSRI15.DLL, tuxri15.dll.

 

 

 

obrigado Alvaro

 

Responder a