Hola amigos de nuevo aquí con mis dudas pidiendo ayuda.
Resulta que en un bucle Try Except realizo varios post, pero el problema es que cuando falla algun post, resulta que los anteriores ya se han grabado en la BD. Mi pregunta es ¿en el bucle try, si falla algo, todo vuelve a su estado anterior?
Uso Delphi 5 y tablas paradox.
el código es el siguiente:
Código Delphi
[-]
TRY
DbLiquid['NMAQUINA']:=DbMaquinas['NMAQUINA'];
DbLiquid['FLIQUID']:=DateTimePicker1.Date;
DbLiquid['HUCHA']:=DbEdit1.Text;
DbLiquid['RECAUDACION']:=DbEdit2.Text;
DbLiquid['EXCAMBIO']:=DbEdit3.Text;
DbLiquid['LECTURAX']:=DbEdit4.Text;
DbLiquid['LECTURAZ']:=DbEdit5.Text;
DbLiquid['UBICACION']:=DbMaquinas['UBICACION'];
DbLiquid['DOMICILIO']:=DbMaquinas['DOMICILIO'];
DbLiquid['NIF']:=DbMaquinas['NIF'];
DbLiquid['OBSERVACIONES']:=Edit46.Text;
DbLiquid['CARGADOR']:=DbLookupComboBox1.Text;
DbLiquid['BILLETES']:=DbEdit6.Text;
DbLiquid['PORCENTAJE']:=DbMaquinas['PORCENTAJE'];
DbLiquid['FULTLIQ']:=DateTimePicker1.Date;
DbLiquid.Post;
if DbDevoluc.Locate('NMAQUINA',DbMaquinas['NMAQUINA'],[]) then
begin
DbDevoluc.Edit;
DbDevoluc['FULTLIQ']:=DateTimePicker1.Date;
DbDevoluc.Post;
end
else
begin
DbDevoluc.Append;
DbDevoluc['NMAQUINA']:=DbMaquinas['NMAQUINA'];
DbDevoluc['FULTLIQ']:=DateTimePicker1.Date;
DbDevoluc.Post;
end;
for i:=0 to 41 do
begin
if (ALabels[i].Caption<>'') and (AEdits[i].Text<>'') then
begin
DbDLiquid.Append;
DbDLiquid['NMAQUINA']:=DbMaquinas['NMAQUINA'];
DbDLiquid['FLIQUID']:=DateTimePicker1.Date;
DbDLiquid['ABREVIA']:=ALabels[i].Caption;
DbProducto.Locate('ABREVIA',ALabels[i].Caption,[]);
DbDLiquid['PRODUCTO']:=DbProducto['PRODUCTO'];
DbDLiquid['VENTAS']:=AEdits[i].Text;
DbDLiquid['EXISTENCIAS']:=AEdits2[i].Text;
DbDLiquid.Post;
end;
end;
for i:=0 to 41 do
begin
if (ALabels[i].Caption<>'') and (AEdits[i].Text<>'') then
begin
if not DbResultPL.Locate('NMAQUINA;ABREVIA', VarArrayOf([DbMaquinas['NMAQUINA'],ALabels[i].Caption]),[])then
begin
DbResultPL.Append;
DbResultPL['NMAQUINA']:=DbMaquinas['NMAQUINA'];
DbResultPL['FLIQUID']:=DateTimePicker1.Date;
DbResultPL['ABREVIA']:=ALabels[i].Caption;
DbProducto.Locate('ABREVIA',ALabels[i].Caption,[]);
DbResultPL['PRODUCTO']:=DbProducto['PRODUCTO'];
DbResultPL['EXISTANT']:=AEdits2[i].Text;
DbResultPL['PRCOSTO']:=DbProducto['PRCOSTO'];
DbResultPL['PRPUBLICO']:=DbProducto['PRPUBLICO'];
DbResultPL['TOTCOSTO']:=DbResultPL['ENTRADAS']*DbResultPL['PRCOSTO'];
DbResultPL['TOTPUBLICO']:=DbResultPL['ENTRADAS']*DbResultPL['PRPUBLICO'];
DbResultPL.Post;
end
else
begin
DbResultPL.Edit;
DbResultPL['EXISTANT']:=AEdits2[i].Text;
DbResultPL.Post;
end;
end;
end;
QDatos.Close;
Close;
except
application.MessageBox('¡HA OCURRIDO UN ERROR AL INTENTAR GRABAR LOS DATOS!'+#13+#13+
'Compruebe:'+#13+'- Si los campos obligatorios están rellenos.',
'¡Atención!', mb_iconStop + mb_Ok);
end
Muchas gracias por vuestra ayuda.