Anderson,
 
Estou usando SqlServer2000, ser� que algu�m da lista teria uma rotina de erro do SqlServer2000 para me mandar, ou se puderem me dar algumas dicas ?
 
obrigado Alvaro
----- Original Message -----
Sent: Friday, September 13, 2002 11:28 AM
Subject: Re: [sqlwin] Centura Builder- SqlError

�lvaro,
 
Para vc capturar todos os erro gerados pelo banco, vc deve usar o evento
On SAM_SqlError em 'Application Actions'.
tenho um exempo.
vc vai ter que adaptar esta fun��o ela est� tratando erros ORACLE
esta on��o � invocada em On SAM_SqlError
 
 
!!CB!! 134
Function: fcTrataErro
 Description: Fun��o que trata os erros retornados do banco.
 Returns
  Number:
 Parameters
 Static Variables
 Local variables
  String: lsTxtErro
  String: lsCnst
  String: lsSqlErro
  Number: lnNumrErro
  Number: lnPos
  Number: lnInicPos
  Number: lnFimPos
  Sql Handle: lshErro
  Sql Handle: lshTeste
 Actions
  Call SalWaitCursor( TRUE )
  Call SqlExtractArgs( wParam, lParam, lshErro, lnNumrErro, lnPos )
  ! Excess�es de Erro
  If lnNumrErro = 202 OR lnNumrErro = 203
   Call SalWaitCursor( FALSE )
   Return TRUE
  ! Erros do Login - N�o chamar o objeto Mensagem
  ! Tratar Usu�rio e senha informados
  If lnNumrErro = 21017
   Call SalMessageBox( "Usu�rio ou Senha Inv�lido.", "XXXXXXX", MB_IconStop + MB_Ok )
   Return FALSE
  If lnNumrErro = 20988 OR lnNumrErro = 20922 OR lnNumrErro = 20911
   Call SalMessageBox( "Senha n�o pode conter caracteres especiais nem come�ar com n�mero.", "XXXXXXX", MB_IconStop + MB_Ok )
   Return FALSE
  ! Tratar Falha no Servidor
  If lnNumrErro = 26108 OR lnNumrErro = 23113 OR lnNumrErro = 21034
   Call SalMessageBox( "N�o foi poss�vel localizar o Servidor de Banco de Dados . Verifique se a conex�o est� correta.", "XXXXXX", MB_IconStop + MB_Ok )
   Return FALSE
  If lnNumrErro = 22068
   Call SalMessageBox( "N�o foi poss�vel localizar o Servidor de Banco de Dados do SSSSSSSS. Verifique se a conex�o est� correta.", "SIGMA", MB_IconStop + MB_Ok )
   Return FALSE
  ! Tratar Limite de Conex�es
  If lnNumrErro = 22391
   Call SalMessageBox( "O limite de conexoes simultaneas do usuario excedeu o maximo estabelecido.", "XXXXXXXX", MB_IconStop + MB_Ok )
   Return FALSE
  ! Tratar Time-Out
  If lnNumrErro = 20051 OR lnNumrErro = 21575 OR lnNumrErro = 22049 OR
       lnNumrErro = 24021 OR lnNumrErro = 20600 OR lnNumrErro = 22396 OR
       lnNumrErro = 21012 OR lnNumrErro = 24210 OR lnNumrErro = 22396 OR
       lnNumrErro = 29115 OR lnNumrErro = 29120 OR lnNumrErro = 20028 OR
       lnNumrErro = 20030 OR lnNumrErro = 03114
   Call SalMessageBox( "Conex�o com o Banco foi finalizada. Inicie o aplicativo novamente.", "XXXXXXXX", MB_IconStop + MB_Ok )
   Call SalQuit(  )
   ! Return ERR_TIMEOUT
  ! Antes dessa fun��o erros Oracles deve ser somado com 20.000
  Call SqlGetError( lshErro, lnNumrErro, lsTxtErro )
  Set lsSqlErro = SqlGetLastStatement(  )
  Call SqlImmediate( "ROLLBACK" )
  ! Erros tratados via objeto Mensagem
  ! Erros de Constraints
  If lnNumrErro = 1 OR (lnNumrErro >= -2292 AND lnNumrErro <= -2290)
   ! Pegar a Constraint
   Set lnInicPos = SalStrScan(lsTxtErro, '(')
   Set lnFimPos = SalStrScan(lsTxtErro, ')')
   Set lsCnst = SalStrMidX( lsTxtErro, lnInicPos+1, lnFimPos-lnInicPos-1)
   ! Retirar o Owner da Constraint
   Set lnInicPos = SalStrScan(lsCnst, '.')
   Set lsCnst = SalStrMidX( lsCnst, lnInicPos+1, SalStrLength(lsCnst)-lnInicPos)
   ! Chamar o OLE de Mensagem
   Call gobjMens.Show( lsCnst,'','','','','')
  ! Erros de PL/SQL
  Else If (lnNumrErro <= -20000 AND lnNumrErro >= -20999)
   ! Chamar o OLE de Mensagem
   Call gobjMens.Show( SalNumberToStrX( lnNumrErro, 0),'','','','','')
  ! Erros Gen�ricos de Banco
  Else
   ! Chamar janela de erro
   Call SalMessageBeep( MB_IconStop )
   Call SalModalDialog( dlgErro, hWndMDI, lnNumrErro, lsTxtErro, lsSqlErro )
  Call SalWaitCursor( FALSE )
 
 
 
 
 
 
Anderson Martins
024- 9942-6748
024-3344-3575 com.
CPM S/A.
----- Original Message -----
Sent: Friday, September 13, 2002 9:28 AM
Subject: RES: [sqlwin] Centura Builder- SqlError


Quer ter seu pr�prio endere�o na Internet?
Garanta j� o seu e ainda ganhe cinco e-mails personalizados.
Dom�niosBOL - http://dominios.bol.com.br

Alvaro:
 
Use o seguinte comando:
 
Call SqlExtractArgs( wParam, lParam, HSQL_ERROR, N_ERROR, N_POS_ERROR )
 
[ ]'s, Julio.

-----Mensagem original-----
De: Alvaro [mailto:[EMAIL PROTECTED]]
Enviada em: sexta-feira, 13 de setembro de 2002 01:40
Para: Lista Centura
Assunto: [sqlwin] Centura Builder- SqlError

Como fa�o para pegar o n�mero do erro do Banco sem que o centura trate-o.
Na verdade gostaria de criar um rotina erro onde apareceria as mensagens que eu crei ou seja, amigaveis para o usu�rio.

 

Responder a