Ver Mensaje Individual
  #1  
Antiguo 20-01-2011
Avatar de vmorillos
vmorillos vmorillos is offline
Miembro
NULL
 
Registrado: nov 2010
Posts: 17
Reputación: 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