Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-01-2011
Avatar de vmorillos
vmorillos vmorillos is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 17
Poder: 0
vmorillos Va por buen camino
Smile Transaccion, captura de error

Hola a todos, aqui pidiendo su consejo nuevamente. Debo mencionar primero que uso Zeos 6.6.6, mysql 5 y delphi 7.
Tengo tres tablas: una factura, el detalle de la factura (zDetalle) y una tabla producto. La tabla detalle como es logico tiene una llave compuesta por el codigo de la factura y el codigo de los productos.
Lo que quiero es capturar el error al momento de insertar una llave duplicada en la tabla detalle, para lo cual uso el siguiente codigo:

Código Delphi [-]procedure TForm1.Button1Click(Sender: TObject); var iCodigoProducto,iCodigoFactura,iCantidad : integer; fPrecio : Double; begin iCodigoProducto:=StrToInt(edProducto.Text); iCodigoFactura:=StrToInt(edFactura.Text); iCantidad:=StrToInt(edCantidad.Text); fPrecio:=StrToFloat(edPrecio.Text); ZConnection1.StartTransaction; try zDetalle.Insert; zDetalleProdCodigo.Value:=iCodigoProducto; zDetalleFactCodigo.Value:=iCodigoFactura; zDetalleCantidad.Value:=iCantidad; zDetallePrecio.Value:=fPrecio; zDetalle.Post; // <--- El error es lanzado aqui y no en el EXCEPT ZConnection1.Commit; except on E:EZSQLException do begin ShowMessage('Error codigo: '+IntToStr(E.ErrorCode)+' - '+E.Message); ZConnection1.Rollback; end; end; end;


Pero el error es lanzado justo después de intentar el post y nunca entra al except y muestra el showmessage. Es extraño porque he puesto este otro codigo en otro botón y si entra al except:

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
begin
      ZQuery1.SQL.Clear;
      ZQuery1.SQL.Add('SELECT FROM');
      ZQuery1.Active:=false;

      ZConnection1.StartTransaction;

      try
            ZQuery1.active:=true;

            ZConnection1.Commit;
      except
            on E:EZSQLException do
            begin
                ShowMessage('Error codigo: '+IntToStr(E.ErrorCode)+' - '+E.Message);
                ZConnection1.Rollback;
            end;

      end;
end;

Espero su ayuda y muchas gracias de antemano a todos.

PD: En el uses he agregado "ZDbcIntfs"
__________________
dibe
Responder Con Cita
 



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
Procedimiento almacenado no captura error Carlos Hurtado Firebird e Interbase 0 27-01-2007 15:07:39
controlar error en transacción kikodelphi MS SQL Server 2 12-05-2006 02:53:09
Captura de error en Procedimiento almacenado lucasarts_18 Firebird e Interbase 11 28-12-2005 15:02:42
Devolver código de error de una transacción kikodelphi MS SQL Server 7 18-10-2005 14:41:49
captura de Error de Interbase digital Firebird e Interbase 2 25-06-2003 10:22:14


La franja horaria es GMT +2. Ahora son las 19:04:40.


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