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