Hola
melissa_12
Pues, básicamente es una mezcla de los aportes que te hemos dado y un poco mas de investigación de tu parte.
EL primer paso es: Si al subir al FTP falla ejecute el DTS si no trabaje normalmente. Esto se puede conseguir muy fácil. Solo debes agregar un manejo de errores al proceso de subida y puedes si quieres meterlo dentro de una función para que te sea mas fácil.
Código Delphi
[-]
function SubirEnFTP : boolean;
begin
try
Result := True;
except
Result := False;
end;
end;
procedure SubirArchivos
begin
if not SubirEnFTP then
FuncionParaEjecutarDTS; end;
Esto es solo el comienzo. el resto debes completarlo, investigando, programando e intentando.
A mi me queda la duda si al finalizar el programa como finaliza la transacción que llamó al DTS, finalizaría ese DTS. No se como digo me queda esa duda y si llegase a ser así entonces deberás atacar el problema con otra solución.
Se me ocurriría crear una tabla donde recibiera información de tareas ftp a ejecutar y un job de SQL estuviese revisando periódicamente esta tabla y una vez lo halla ejecutado marque su estado como tarea inactiva.
En este escenario, delphi trataría de ejecutar la subida de archivos y en caso de fallar registraría la tarea en la tabla. así al finalizar el programa se cierra la transacción pero la tarea que se ejecuta continuamente en el servidor haría su trabajo en el momento necesario. Esto también brindaría un mecanismo de revisión de las tareas ftp programadas.
Saludos, y como dije es apenas el comienzo.