Entiendo po el código que ::oCnx es un data de una clase tuya que contendra la referencia al servidor, imagino.
Puedes añadir un gestor de errrores personalizado, y en función del código de error MySql visualizar el mensaje que corresponda.
- Code: Select all Expand view
connect ::oCnx HOST cHost;
USER "";
PASSWORD "";
PORT "";
FLAGS 0;
DATABASE ""
::oCnx:bOnError:={|oServer,nError,lInternal,cExtra| CtrlError( oServer, nError, lInternal, cExtra )}
...
//---------------------------------------------------------------
STATIC FUNCTION CtrlError( oServer, nError, lInternal, cExtra )
LOCAL cText := ""
LOCAL oError
hb_Default( @cExtra, "")
SWITCH nError
CASE 1062
MsgAlert( 'Clave Primaria duplicada, registros no se ha grabado '+CRLF+;
'Error '+Trim(Str(nError))+CRLF+;
If( lInternal, "Internal Error:" + DOL_GETERROTEXT( nError ) , oServer:ErrorTxt() ) + " "+ CRLF + cExtra )
EXIT
CASE 1451
...
OTHERWISE
oError := ErrorNew()
oError:SubSystem = If( lInternal, "TDOLPHIN", "MYSQL" )
oError:SubCode = nError
oError:Severity = 2
oError:Description = If( lInternal, "Internal Error:" + DOL_GETERROTEXT( nError ) , oServer:ErrorTxt() ) + " " + cExtra
Eval( ErrorBlock(), oError )
END
RETURN NIL
Busca en la documentación de MySql el código de error que quieres monitorizar y agregalo al siwtch. También debes decidir si generas error, o por el contrario puede seguir la ejecución.