Ver Mensaje Individual
  #3  
Antiguo 26-01-2023
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Veo que borras el registro de la tabla y luego haces un Next en el bucle. Creo que así te saltarás registros de la taba.
Te recomiendo hacer una lista de los ficheros a borrar y tratarlos a todos de la misma manera (if FileExists().. if DeleteFile())
También te recomiendo utilizar while not EOF para evitar errores cuando refrescas datos en el bucle (borrar registros) y la cantidad varía.
Además de esto. Pon el nombre del fichero en el mensaje de error. Puede que veas que sale vacío o con cosas raras y te des cuenta de algún error en el algoritmo.


Código Delphi [-]
  ListaFicheros := TStringList.Create;
  try
    while not FDQuery.EOF do
    begin
      ListaFicheros.Clear;
      ListaFicheros.Add(FDQueryParametrosPAEXINGRESOSXML.Value+'\'+FDQuery.FieldByName('NOMBRE_ARCHIVO').V  alue+'.XML');
      ListaFicheros.Add(FDQueryParametrosPAEXINGRESOSPDF.Value+'\'+FDQuery.FieldByName('NOMBRE_ARCHIVO').V  alue+'.PDF');
      
      TodoBorrado := True;
      // Recorro en forma inversa porque ire borrando los registros tratados
      for i := ListaFicheros.Count -1 downto 0 do
      begin
        if not FileExists(ListaFicheros[i]) then    
          ListaFicheros.Delete(i)
        else
        begin
          if DeleteFile(ListaFicheros[i])  then 
            ListaFicheros.Delete(i)
          else
          begin 
            TodoBorrado := False;
            showMessage('Hubo un error al eliminar el archivo PDF' + ListaFicheros[i] + #13#10 + 'Favor de Eliminar Manualmente.');
          end;
        end;
      end;
      
      // Si pude borrar todos los ficheros borro el registro de la tabla
      if TodoBorrado then
        DModuloEmpresa.FDQuery.Delete
      else
      begin
        // En este punto, dentro de ListaFicheros, tienes los ficheros que no se han podido borrar
        FDQuery.Next;
      end;
    end;
  finally
    ListaFicheros.Free;
  end;
Responder Con Cita