Ver Mensaje Individual
  #2  
Antiguo 22-05-2008
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Reputación: 20
basti Va por buen camino
Es posible que lo haga mal cuando se introduce el un código incorrecto. El primer locate deberías ponerlo como condición de un if para comprobar el código.

Código Delphi [-]
FPrincipal.TDatos.Open;
if FPrincipal.TDatos.Locate('No_Inventario',FModifica.CB_Inventario_Mejora.Text,[]) then
begin
  Campo1:=FPrincipal.TDatos.FieldByName('Monitor').AsString;
  Campo2:=FPrincipal.TDatos.FieldByName('Monitor_Estado').AsString;
  with FPrincipal.TDatos do
  begin
    // Open; ---> ya está abierto
    // Locate('No_Inventario',FModifica.CB_Inventario_Mejora.Text,[]); --> ya se hizo arriba
    //guardo los cambios
    Edit;
    FieldByName('Monitor').AsString:=QAlmacen.FieldByName('Marca').AsString;
    FieldByName('Monitor_Estado').AsString:=QAlmacen.FieldByName('Estado').AsString;
    Post;
    Close;
  end;

  with TAlmacen do
  begin
    Open;
    if Locate('Medio ; Marca',VarArrayOf(['Monitor',Campo1]),[]) then  Delete;
    Insert;
    FieldByName('Fecha').AsDateTime:=Date;
    FieldByName('No_Inventario').AsString:=FModifica.CB_Inventario_Mejora.Text;
    FieldByName('Medio').AsString:='Monitor';
    FieldByName('Marca').AsString:=Campo1;
    FieldByName('Estado').AsString:=Campo2;
    Post;
    // Refresh; --> antes de cerrar no hace falta.
    Close;
  end;
end
else Application.MessageBox('Registro no encontrado', 'Error');
__________________
Saludos.
Responder Con Cita