PDA

Ver la Versión Completa : Error al generar Numero de Cotizacion


webmasterplc
27-09-2016, 15:42:35
Buenas estoy tratando de totalizar un presupuesto en el cual llamo dos funciones una que es la que toma e numero que viene de una base de datos y coloca el siguiente esto funciona perfecto igual aqui dejo el codigo por si alguna sugerencia de optimizacion o si le sirve a alguien.

var
ncot,pncot:Integer;
begin
with datos.sqcalculo do
begin
SQL.Clear;
SQL.Add('Select * From csconfig');
ExecSQL;
ncot:= FieldByName('config_cotizacion').AsInteger;
end;
pncot:= ncot+agregado;

with datos.sqcalculo do
begin
SQL.Clear;
SQL.Add('Update csconfig');
SQL.Add('set config_cotizacion=:pn_cot');
ParamByName('pn_cot').AsInteger:=pncot;
ExecSQL;
end;

y la llamo asi
numerocot(1);
guardarcotizacion(documento,control,txtobservaciones.Text,1,1,100,12,112,0,now);


el problema esta es si ocurre algun error en un parametro de el p´rocedimiento guardarcotizacion el igual me suma un numero a la base de datos de la cotizacion que viene

Neftali [Germán.Estévez]
27-09-2016, 17:04:39
Supongo que independientemente de otras consideraciones, ambas operaciones deberían hacerse dentro de la misma transacción, de forma que si falla la segunda, se anule la primera y no incrementes el contador.

gatosoft
28-09-2016, 04:45:52
Tambien puedes revisar la posibilidad de trasladar toda la lógica de la generación de la cotización a la base de datos, asi podrias tener todo dentro de un procedimeinto almacenado (en el motor que utilices) y no tendras que trabajarlo con transacciones en delphi. ambas opciones son váldas.