Ver Mensaje Individual
  #1  
Antiguo 10-06-2008
grotero76 grotero76 is offline
Miembro
 
Registrado: feb 2007
Posts: 32
Reputación: 0
grotero76 Va por buen camino
Ejecución de un DTS de SQL Server 2000

Hola a todos,

he encontrado el siguiente código para ejecutar un DTS de Sql Server 2000 desde desphi:

Código:
procedure TForm1.Button2Click(Sender: TObject);
var
  oPackage:TPackage;
  vHost: OleVariant;
begin
  try
    // inicializar
    CoInitialize(nil);
    //Crear el objeto
    oPackage:=TPackage.Create(nil);
    // Cagarlo
    oPackage.LoadFromSQLServer(
      Edit1.Text,     // Servidor
      Edit2.Text,     // Usuario
      Edit3.Text,     // Contraseña
      256,'', '', '',
      Edit4.Text,     // Nombre del DTS
      vHost);
    // ejecutar
    oPackage.UnInitialize;
    oPackage.Execute;
    MessageDlg('Ejecución correcta.', mtInformation, [mbOK], 0);
  except
    raise;
  end;
end;
El caso es que yo le paso el servidor, usuario, contraseña y nombre del DTS correctos pero al ejecutar este código no hace nada, aunque tampoco da ningún error. ¿Alguien puede decirme si hay algo que esté haciendo mal?

Otra forma de ejecutar el DTS es usando la función de DOS WINEXEC. Así:
Código:
   if (winexec(PChar('dtsrun /S '+datasource+' /U '+usuario+' /P '+password+' /N '+dtrName),SW_HIDE)<31)
    then ShowMessage('Hubo un error en la llamada al dts.');
Esto se ejecuta y funciona sin ningún problema, pero no me sirve ya que si se produce algún error al ejecutar el DTS, como por ejemplo que el DTS no exista se produce el error y se ve en la ventana de DOS pero no sé como controlar la excepción para indicar desde Delphi que se produjo un error, es decir, el mensaje que pongo en ShowMessage no se ve nunca, aunque el DTS no haya podido ejecutarse.

Espero que me podáis ayudar, pues llevo dando vueltas a esto bastante tiempo.

Un saludo y muchas gracias.
Responder Con Cita