PDA

Ver la Versión Completa : Desaciendo una transaccion con DBExpress


novato_erick
29-01-2014, 23:47:30
Hola chicos:

Tengo esta interrogante:

Al no traer obtener el conjunto de datos para finalizar mi transaccion o sea CommitFreeandNill con con el tdbxTransaction y lo que quiero es desaser sin embargo no he logrado implementarlo envio una parte del codigo a ver si iluminan el camino... ah utilizo firebird 2.5



procedure TFrmIngresarArticulo.BtnAceptarClick(Sender: TObject);
var
exito: Boolean;
begin
if (eLaborat.Visible = True) and (eLaborat.Text = '') then
begin
ShowMessage('Favor ingresar Laboratorio');
Exit;
end;
if eProveedor.Text = '' then
begin
ShowMessage('Favor ingrese un Proveedor');
Exit;
end;
Conexion.ObtieneRuta;
funciones.CapIdArt;
trnIngresaArticulos := dmConecta.FBLINUXCONECTION.BeginTransaction;
try // inicia proceso
with dmLogicaArticulos.qIngresaArt do
begin
Close;
parambyname('COD_BARRA').AsString := eCodBarra.Text;
parambyname('NOMBRE').AsString := mNombre.Text;
parambyname('DESCRIPCION').AsString := mDescripcion.Text;
parambyname('GRAVADO').AsString := IntToStr(cbxIVA.ItemIndex);
parambyname('ESTADO').AsString := booltostr(ckbxEstado.Checked);
parambyname('FECHA_INGRESO').AsDateTime := DtpFechaIngreso.DateTime;
parambyname('ID_ARTICULO').AsInteger := idArticulo;
parambyname('CANTIDAD').AsString := eCantidad.Text;
parambyname('CANTIDAD_MINIMA').AsString := eCantidadMinima.Text;
parambyname('CANTIDAD_MAXIMA').AsString := eCantidadMaxima.Text;
ExecSql;
end;
with dmLogicaArticulos.qPreciosArticulos do
try
Params.parambyname('pId_Articulo').AsInteger := idArticulo;
if id_artximpuesto = 0 then
begin
ShowMessage('Error con Datos de Impuesto favor verifique');//aquí pretendo salir para verificar el dato porqué no se envío e iniciar sin embargo no lo hace..
Exit;
end
else
begin
Params.parambyname('pId_Artximp').AsInteger := id_artximpuesto;
end;
Params.parambyname('pPCompra').AsFloat := pc;
if id_iva <> 0 then
begin
Params.parambyname('pPconIVI').AsFloat := pconivi;
end
else
begin
Params.parambyname('pPconIVI').AsFloat := StrToFloat('0.00');
end;
Params.parambyname('pPsinIVI').AsFloat := sub1;
Params.parambyname('pMontoIVI').AsFloat := pvta;
Params.parambyname('pComision').AsFloat := pcom;
Params.parambyname('pGastos').AsFloat := pg;
Params.parambyname('pMargen').AsFloat := pm;
finally
ExecSql;
end;
// Fin del ingreso de precios.
end;
begin
dmConecta.FBLINUXCONECTION.CommitFreeAndNil(trnIngresaArticulos);
exito := True;
ShowMessage('Articulo Agregado Satisfactoriamente');
end;
except
on e: exception do
begin
dmConecta.FBLINUXCONECTION.RollbackFreeAndNil(trnIngresaArticulos);
ShowMessage('Error Encontrado' + e.Message);
Raise;
end;
end;


El Ciclo estará correcto?

Saludos

novato_erick