Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-06-2008
grotero76 grotero76 is offline
Miembro
 
Registrado: feb 2007
Posts: 32
Poder: 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
  #2  
Antiguo 11-06-2008
grotero76 grotero76 is offline
Miembro
 
Registrado: feb 2007
Posts: 32
Poder: 0
grotero76 Va por buen camino
Por si a alguien le sirve he encontrado un método que funciona perfectamente, os lo pongo:

Código:
procedure SincronizarBD;
var
  pkg: Variant;
  i:integer;
begin
  pkg:= CreateOleObject('DTS.Package');
  try
    pkg.LoadFromSQLServer(datasourceName,UserName,Password,,,,,dtsName),'');
    for i := 1 to pkg.steps.count do
      pkg.steps.Item(i).executeinMainThread := True;
    pkg.FailOnError := true;
    pkg.Execute;
    MessageDlg('La sincronización se ha realizado correctamente',mtInformation,[mbOK],0);
  except
  on E: Exception do
  begin
    showmessage('Error = ' + E.Message);
    exit;
  end;
end;
pkg.uninitialize;
pkg:=UnAssigned;
end;

Un saludo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ejecucion de Aplicación en Windows 2000 Server skywaker Servers 2 23-05-2007 17:47:34
BDE y SQL Server 2000 pascalutn2003 Conexión con bases de datos 3 20-05-2007 23:37:16
Problemas conectividad instalando sql server 2000 en w2k server ospaco69 MS SQL Server 1 16-02-2007 04:39:17
Exportar database sql server 2005 a sql server 2000 ErenioDhG Conexión con bases de datos 1 29-08-2006 15:42:46
Ms Word 2000/97 + Ms sql server 7/2000 + almacenar - leer - actualizar Campos jcp_nqn Servers 0 21-12-2003 01:55:14


La franja horaria es GMT +2. Ahora son las 01:22:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi