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 11-12-2006
JuanchoArg JuanchoArg is offline
Miembro
 
Registrado: nov 2005
Posts: 30
Poder: 0
JuanchoArg Va por buen camino
Problema con transaccion en SQL server

Tengo un problema al correr una transaccion en SQL server desde una componente Adoquery. No me detecta el error si no es en la ultima linea sql que envio dentro de la transaccion. Incluso la transaccion inserta todas la lineas sin error aunque se haya provocado un error en una linea previa. Asi armo la transaccion

Código SQL [-]
 
Begin Tran
 
--sql1...
--sql2...
 
if @@error <> 0
rollback tran
Else
commit tran

Por lo que veo @@error solo detecta el error si se produce en la ultima linea, sino lo deja pasar y no hace el rollback tran. Como hago para que detecte errores en cualquier parte de la transaccion y pueda manejarlo con dentro de un
Código Delphi [-]
try except end
desde delphi. Cualquier tipo de ayuda se las agradeceria. Saludos.
Responder Con Cita
  #2  
Antiguo 11-12-2006
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Si en bloque transaccional vas a ejecutar varias sentencias de acción (borrado, inserció o acutalización) debes comprobar el valor de @@ERROR al final de cada una de ellas.

Tu bloque debe quedar así

Código SQL [-]

Begin Tran
 
--sql1...
if @@error <> 0
  Begin
     rollback tran
     GOTO: MANEJADORERROR
  End 
--sql2...
if @@error <> 0
  Begin
     rollback tran
     GOTO: MANEJADORERROR
  End
commit tran

--Termina el Sp
Return

MANEJADORERROR:
  RaiseError(--notificación de error a nivel de sistema)

Suerte
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #3  
Antiguo 13-12-2006
JuanchoArg JuanchoArg is offline
Miembro
 
Registrado: nov 2005
Posts: 30
Poder: 0
JuanchoArg Va por buen camino
Sigo con problemas en la transaccion

Ke tal amigo? agradezco la ayuda que me diste. Pero aun tengo un problema, no se porque motivo un insert con clave duplicada no genera error al correr el adoquery. En el analizador de consulta da el error pero delphi no lo detecta. y me serviria que me devuelva un error si algo no anduvo bien en la transaccion.
Asi quedo la transaccion que corro.

Código SQL [-]
 
BEGIN TRAN
insert into croperatoria (idoperatoria,fecha) values ('000500000012','2006-12-13');
if @@error <>0 begin  rollback tran; RETURN; end;
insert into cuentas (nro_cuenta,lim_cred,cred_utiliz, estado, est_aval,fec_alta) values ('00025001',250,0,'Habilitado','','2006/12/13')
if @@error <>0 begin  rollback tran; RETURN; end;
...
...
...
commit tran


Usé tambien el RAISERROR para que me devuelva un mensaje de error como me explicaste antes, pero no hay forma de que delphi lo detecte o yo no se como hacer para detectarlo. ASi es el codigo en delphi.

Código Delphi [-]
 
fmain.adoq.SQL.Clear;
fmain.adoq.SQL.LoadFromFile(files);
ok:=true;
estado:='OK';
try
res:=fmain.ADOq.ExecSQL;
except
estado:='FALLO';
ok:=false;
end;
Si me ayudas de nuevo te lo agradeceria.

Saludos
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con excepsión y transacción mpedra MS SQL Server 8 11-04-2006 22:33:32
Problema con transaccion con IB reina Varios 2 03-09-2005 02:40:11
Urgente - problema de insertar en tabla - Transaccion Activa Patricio Conexión con bases de datos 2 27-06-2005 16:29:06
Problema con SQL Server 7.0 Esau MS SQL Server 2 20-07-2004 20:30:57
Problema SQL Server hot1974 MS SQL Server 5 20-04-2004 18:13:37


La franja horaria es GMT +2. Ahora son las 15:40:00.


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