OVH Cloud OVH Cloud

Lancement lot DTS dans objet ActiveX

4 réponses
Avatar
Mystique
Bonjour,

Dans un lot DTS j'utilise un objet ActiveX qui va me permettre d'exécuter un
lot ou un autre en fonction de la valeur d'une variable.
Je n'arrive pas à faire fonctionner le code trouvé dans l'aide SQL Server :

Function Main()

If DTSGlobalVariables("SERVEUR").Value="TOTO" Then

Private WithEvents mobjPkgEvents As DTS.Package
. . .
Private Sub RunPackage()
'Run the package stored in file C:\DTS_UE\TestPkg\VarPubsFields.dts.
Dim objPackage As DTS.Package2
Dim objStep As DTS.Step
Dim objTask As DTS.Task
Dim objExecPkg As DTS.ExecutePackageTask

On Error GoTo PackageError
Set objPackage = New DTS.Package
Set mobjPkgEvents = objPackage
objPackage.FailOnError = True

'Create the step and task. Specify the package to be run, and link the step
to the task.
Set objStep = objPackage.Steps.New
Set objTask = objPackage.Tasks.New("DTSExecutePackageTask")
Set objExecPkg = objTask.CustomTask
With objExecPkg
.PackagePassword = "user"
.FileName = "C:\DTS_UE\TestPkg\VarPubsFields.dts"
.Name = "ExecPkgTask"
End With
With objStep
.TaskName = objExecPkg.Name
.Name = "ExecPkgStep"
.ExecuteInMainThread = True
End With
objPackage.Steps.Add objStep
objPackage.Tasks.Add objTask

'Run the package and release references.
objPackage.Execute

Set objExecPkg = Nothing
Set objTask = Nothing
Set objStep = Nothing
Set mobjPkgEvents = Nothing

objPackage.UnInitialize
End Sub

Main=DTSTaskExecResult_Success
Else
Main=DTSTaskExecResult_Success
End if
End Function


merci pour votre aide.

4 réponses

Avatar
Med Bouchenafa
Cela ressemble beaucoup plus à un code qui serait lancé par un programme externe comme VB ou
VBScript.
Si ton besoin est juste d'exécuter un lot ou un autre en fonction d'un certain critère, le mieux
serait de créer un lot qui contiendrait deux tâches "Exécution d'un lot" avec un workflow entre
elles

--
Bien cordialement
Med Bouchenafa


"Mystique" a écrit dans le message de news:

Bonjour,

Dans un lot DTS j'utilise un objet ActiveX qui va me permettre d'exécuter un
lot ou un autre en fonction de la valeur d'une variable.
Je n'arrive pas à faire fonctionner le code trouvé dans l'aide SQL Server :

Function Main()

If DTSGlobalVariables("SERVEUR").Value="TOTO" Then

Private WithEvents mobjPkgEvents As DTS.Package
. . .
Private Sub RunPackage()
'Run the package stored in file C:DTS_UETestPkgVarPubsFields.dts.
Dim objPackage As DTS.Package2
Dim objStep As DTS.Step
Dim objTask As DTS.Task
Dim objExecPkg As DTS.ExecutePackageTask

On Error GoTo PackageError
Set objPackage = New DTS.Package
Set mobjPkgEvents = objPackage
objPackage.FailOnError = True

'Create the step and task. Specify the package to be run, and link the step
to the task.
Set objStep = objPackage.Steps.New
Set objTask = objPackage.Tasks.New("DTSExecutePackageTask")
Set objExecPkg = objTask.CustomTask
With objExecPkg
.PackagePassword = "user"
.FileName = "C:DTS_UETestPkgVarPubsFields.dts"
.Name = "ExecPkgTask"
End With
With objStep
.TaskName = objExecPkg.Name
.Name = "ExecPkgStep"
.ExecuteInMainThread = True
End With
objPackage.Steps.Add objStep
objPackage.Tasks.Add objTask

'Run the package and release references.
objPackage.Execute

Set objExecPkg = Nothing
Set objTask = Nothing
Set objStep = Nothing
Set mobjPkgEvents = Nothing

objPackage.UnInitialize
End Sub

Main=DTSTaskExecResult_Success
Else
Main=DTSTaskExecResult_Success
End if
End Function


merci pour votre aide.



Avatar
Mystique
C'est bien du VBscript que je veux utiliser pour exécuter mes lots dans un IF
THEN ELSE.

"Med Bouchenafa" a écrit :

Cela ressemble beaucoup plus à un code qui serait lancé par un programme externe comme VB ou
VBScript.
Si ton besoin est juste d'exécuter un lot ou un autre en fonction d'un certain critère, le mieux
serait de créer un lot qui contiendrait deux tâches "Exécution d'un lot" avec un workflow entre
elles

--
Bien cordialement
Med Bouchenafa


"Mystique" a écrit dans le message de news:

> Bonjour,
>
> Dans un lot DTS j'utilise un objet ActiveX qui va me permettre d'exécuter un
> lot ou un autre en fonction de la valeur d'une variable.
> Je n'arrive pas à faire fonctionner le code trouvé dans l'aide SQL Server :
>
> Function Main()
>
> If DTSGlobalVariables("SERVEUR").Value="TOTO" Then
>
> Private WithEvents mobjPkgEvents As DTS.Package
> . . .
> Private Sub RunPackage()
> 'Run the package stored in file C:DTS_UETestPkgVarPubsFields.dts.
> Dim objPackage As DTS.Package2
> Dim objStep As DTS.Step
> Dim objTask As DTS.Task
> Dim objExecPkg As DTS.ExecutePackageTask
>
> On Error GoTo PackageError
> Set objPackage = New DTS.Package
> Set mobjPkgEvents = objPackage
> objPackage.FailOnError = True
>
> 'Create the step and task. Specify the package to be run, and link the step
> to the task.
> Set objStep = objPackage.Steps.New
> Set objTask = objPackage.Tasks.New("DTSExecutePackageTask")
> Set objExecPkg = objTask.CustomTask
> With objExecPkg
> .PackagePassword = "user"
> .FileName = "C:DTS_UETestPkgVarPubsFields.dts"
> .Name = "ExecPkgTask"
> End With
> With objStep
> .TaskName = objExecPkg.Name
> .Name = "ExecPkgStep"
> .ExecuteInMainThread = True
> End With
> objPackage.Steps.Add objStep
> objPackage.Tasks.Add objTask
>
> 'Run the package and release references.
> objPackage.Execute
>
> Set objExecPkg = Nothing
> Set objTask = Nothing
> Set objStep = Nothing
> Set mobjPkgEvents = Nothing
>
> objPackage.UnInitialize
> End Sub
>
> Main=DTSTaskExecResult_Success
> Else
> Main=DTSTaskExecResult_Success
> End if
> End Function
>
>
> merci pour votre aide.
>





Avatar
Med Bouchenafa
Quel est l'inconvénient à utiliser un lot avec deux tâches "Exécution d'un
lot" ?
C'est normalement fait pour résoudre ce genre de problème.

--
Bien cordialement
Med Bouchenafa

"Mystique" a écrit dans le message de
news:
C'est bien du VBscript que je veux utiliser pour exécuter mes lots dans un
IF
THEN ELSE.

"Med Bouchenafa" a écrit :

Cela ressemble beaucoup plus à un code qui serait lancé par un programme
externe comme VB ou
VBScript.
Si ton besoin est juste d'exécuter un lot ou un autre en fonction d'un
certain critère, le mieux
serait de créer un lot qui contiendrait deux tâches "Exécution d'un lot"
avec un workflow entre
elles

--
Bien cordialement
Med Bouchenafa


"Mystique" a écrit dans le message
de news:

> Bonjour,
>
> Dans un lot DTS j'utilise un objet ActiveX qui va me permettre
> d'exécuter un
> lot ou un autre en fonction de la valeur d'une variable.
> Je n'arrive pas à faire fonctionner le code trouvé dans l'aide SQL
> Server :
>
> Function Main()
>
> If DTSGlobalVariables("SERVEUR").Value="TOTO" Then
>
> Private WithEvents mobjPkgEvents As DTS.Package
> . . .
> Private Sub RunPackage()
> 'Run the package stored in file C:DTS_UETestPkgVarPubsFields.dts.
> Dim objPackage As DTS.Package2
> Dim objStep As DTS.Step
> Dim objTask As DTS.Task
> Dim objExecPkg As DTS.ExecutePackageTask
>
> On Error GoTo PackageError
> Set objPackage = New DTS.Package
> Set mobjPkgEvents = objPackage
> objPackage.FailOnError = True
>
> 'Create the step and task. Specify the package to be run, and link the
> step
> to the task.
> Set objStep = objPackage.Steps.New
> Set objTask = objPackage.Tasks.New("DTSExecutePackageTask")
> Set objExecPkg = objTask.CustomTask
> With objExecPkg
> .PackagePassword = "user"
> .FileName = "C:DTS_UETestPkgVarPubsFields.dts"
> .Name = "ExecPkgTask"
> End With
> With objStep
> .TaskName = objExecPkg.Name
> .Name = "ExecPkgStep"
> .ExecuteInMainThread = True
> End With
> objPackage.Steps.Add objStep
> objPackage.Tasks.Add objTask
>
> 'Run the package and release references.
> objPackage.Execute
>
> Set objExecPkg = Nothing
> Set objTask = Nothing
> Set objStep = Nothing
> Set mobjPkgEvents = Nothing
>
> objPackage.UnInitialize
> End Sub
>
> Main=DTSTaskExecResult_Success
> Else
> Main=DTSTaskExecResult_Success
> End if
> End Function
>
>
> merci pour votre aide.
>







Avatar
Mystique
Mes développements sont passés en recette et en prod avec la solution que tu
préconises et qui est évidente.
Seulement pour la maintenance avoir une erreur lors de l'exécution des
traitements est génant (erreur réel ou condition d'exécution?)
D'où ma recherche d'une meilleure solution

"Mystique" wrote:

Bonjour,

Dans un lot DTS j'utilise un objet ActiveX qui va me permettre d'exécuter un
lot ou un autre en fonction de la valeur d'une variable.
Je n'arrive pas à faire fonctionner le code trouvé dans l'aide SQL Server :

Function Main()

If DTSGlobalVariables("SERVEUR").Value="TOTO" Then

Private WithEvents mobjPkgEvents As DTS.Package
. . .
Private Sub RunPackage()
'Run the package stored in file C:DTS_UETestPkgVarPubsFields.dts.
Dim objPackage As DTS.Package2
Dim objStep As DTS.Step
Dim objTask As DTS.Task
Dim objExecPkg As DTS.ExecutePackageTask

On Error GoTo PackageError
Set objPackage = New DTS.Package
Set mobjPkgEvents = objPackage
objPackage.FailOnError = True

'Create the step and task. Specify the package to be run, and link the step
to the task.
Set objStep = objPackage.Steps.New
Set objTask = objPackage.Tasks.New("DTSExecutePackageTask")
Set objExecPkg = objTask.CustomTask
With objExecPkg
.PackagePassword = "user"
.FileName = "C:DTS_UETestPkgVarPubsFields.dts"
.Name = "ExecPkgTask"
End With
With objStep
.TaskName = objExecPkg.Name
.Name = "ExecPkgStep"
.ExecuteInMainThread = True
End With
objPackage.Steps.Add objStep
objPackage.Tasks.Add objTask

'Run the package and release references.
objPackage.Execute

Set objExecPkg = Nothing
Set objTask = Nothing
Set objStep = Nothing
Set mobjPkgEvents = Nothing

objPackage.UnInitialize
End Sub

Main=DTSTaskExecResult_Success
Else
Main=DTSTaskExecResult_Success
End if
End Function


merci pour votre aide.