Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-02-2005
Avatar de User_baja1
User_baja1 User_baja1 is offline
Miembro
 
Registrado: feb 2005
Posts: 99
Poder: 20
User_baja1 Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 10-02-2005
Avatar de Investment
Investment Investment is offline
Miembro
 
Registrado: may 2003
Posts: 378
Poder: 21
Investment Va por buen camino
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;
__________________
Saludos,
Peter Investment

Última edición por Investment fecha: 10-02-2005 a las 11:25:38.
Responder Con Cita
  #3  
Antiguo 10-02-2005
Avatar de User_baja1
User_baja1 User_baja1 is offline
Miembro
 
Registrado: feb 2005
Posts: 99
Poder: 20
User_baja1 Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:29:45.


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
Copyright 1996-2007 Club Delphi