Ver Mensaje Individual
  #1  
Antiguo 16-10-2007
Avatar de Espartaco
[Espartaco] Espartaco is offline
Miembro Premium
 
Registrado: oct 2005
Posts: 107
Reputación: 19
Espartaco Va por buen camino
Problema con Try Except

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;
                //DbDLiquid['UNIDADES']:=AEdits[i].Text;
                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.
Responder Con Cita