Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-06-2008
grotero76 grotero76 is offline
Miembro
 
Registrado: feb 2007
Posts: 32
Poder: 0
grotero76 Va por buen camino
Detectar error winexec

Hola a todos,

desde mi aplicación ejecuto un paquete dts de sql server con la siguiente instrucción:

Código:
winexec(PChar('dtsrun /S nombreservidor /U usuario /P password /N nombreDTS),SW_SHOW)<31
Mi pregunta es la siguiente:

¿Puedo detectar desde mi aplicación si se ha producido algún error al ejecutar el paquete?. El problema es que tanto si la ejecución del paquete ha ido bien como sino el programa continúa y no se sabe si realmente la ejecución del paquete se llevó a cabo con éxito.

Un saludo y muchas gracias.
Responder Con Cita
  #2  
Antiguo 06-06-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Hasta donde yo sé, si la aplicación al fallar no devuelve un valor indicando que ha fallado, no es possible detectarlo usando sólo el "winexec".

Me refiero, a los famosos "exit code".

Saludos.
Responder Con Cita
  #3  
Antiguo 06-06-2008
grotero76 grotero76 is offline
Miembro
 
Registrado: feb 2007
Posts: 32
Poder: 0
grotero76 Va por buen camino
Gracias por tu respuesta,

el caso es que la función winexec devuelve lo mismo tanto si la ejecución fue bien como sino. Por ejemplo pruebo a ejecutar un DTS que existe y uno que no y el resultado de hacer el winexec lo capturo en una variable entera, siempre obtengo el mismo resultado, en mi caso un 33.

La verdad que no sé qué hacer.

Muchas gracias y un saludo.
Responder Con Cita
  #4  
Antiguo 12-06-2008
Khronos Khronos is offline
Miembro
 
Registrado: abr 2007
Posts: 298
Poder: 18
Khronos Va por buen camino
Hola!

Código Delphi [-]
uses Windows;

var
   ExecError: DWORD;
begin

ExecError:=WinExec(pcahr('MiPrograma.exe'), 1);
      If ExecError>31 then showmessage('MiPrograma.exe se ha ejecutado satisfactoriamente');

    case ExecError of
           0: showmessage('Error en la memoria');
           ERROR_BAD_FORMAT: showmessage('Error en el formato del archivo');
           ERROR_FILE_NOT_FOUND: showmessage('Archivo no encontrado');
           ERROR_PATH_NOT_FOUND: showmessage('La dirección especificada no existe');
    end;

end;

Salu2 espero que te sirva.
Responder Con Cita
  #5  
Antiguo 14-06-2008
grotero76 grotero76 is offline
Miembro
 
Registrado: feb 2007
Posts: 32
Poder: 0
grotero76 Va por buen camino
Hola Khronos,

gracias por tu respuesta, he encontrado otro método de ejecución de DTS sin falta de usar una función DOS...
Lo pongo a continuación por si le sirve a alguien:

Código:
 
procedure EjecutarDTS;
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 ejecució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
Detectar ERROR mjjj Firebird e Interbase 5 29-04-2008 07:17:22
Ayuda con WinExec La__X C++ Builder 2 03-06-2006 05:23:13
Duda con Winexec sagarmar Varios 5 11-05-2006 12:58:17
WinExec karlita_cb Varios 3 18-05-2004 20:52:21
winexec en w2000 ogorut API de Windows 2 23-06-2003 18:41:58


La franja horaria es GMT +2. Ahora son las 05:18:43.


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