Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Capturar mensajes de error de SQL server (https://www.clubdelphi.com/foros/showthread.php?t=18375)

User_baja1 10-02-2005 11:06:43

Capturar mensajes de error de SQL server
 
Hola a todos,
Sabeis como capturar los mensajes de error que devuelve sql server?


Es decir,
tengo desde delphi una Query:

Query.close;
Query.sql.clear;
Query.sql.add('Update tabla set campo=valor where ......');

try
Query.ExecSql
except
---> y aqui es donde me gustaria recoger el error del gestor de base de datos para mostrarselo al usuario con una ventana de error propia.
end;


he visto que si no pongo el try except.. sale el error pero sale mu feo.
¿Sabes como obtener el error producido al ejecutar un Query.execSql ??


Gracias.
David.

Investment 10-02-2005 11:18:46

Código:

try
  query.ExecSQL;
except
  on e:exception do
  begin
        ShowMessage(e.exception); //si comentas esta linea sólo verás tú mensaje.
        ShowMessage('Error al actualizar BD.');
  end;
end;


User_baja1 10-02-2005 18:11:21

Gracias, con ello he podido coger solo el trozo de error que me interesa.

Dado que el error pone:

General SQL error.
[Microsoft][ODBC SQL Server Driver][SQL Server] NO SE PUEDE BLA BLA BLA
[Microsoft][ODBC SQL Server Driver][SQL Server]La petición COMMIT TRANSACTION no tiene la correspondiente BEGIN TRANSACTION.
[Microsoft][ODBC SQL Server Driver][SQL Server]Se terminó la instrucción.

me he creado la siguiente funcion:
function MsgErrorDB(s:String):String;
var aux:String; i,j:integer;
begin
i:= pos('[SQL Server]',s);
i:= i+ length('[SQL Server]');
aux:= copy(s,i+1, length(s));
j:= pos('[Microsoft]',aux);
if j=0 then j:=length(aux);
if (i=0) or (j=0) then aux:= s
else aux:=#13+copy(aux,1,j-1);

result:=aux;
end;


que me devuelve el error: NO SE PUEDE BLA BLA BLA


La franja horaria es GMT +2. Ahora son las 10:36:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi