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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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" <Mystique@discussions.microsoft.com> a écrit dans le message de news:
3289DB51-C0F2-43E4-9D8E-45F0FA42F98A@microsoft.com...
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
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.
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. >
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" <Mystique@discussions.microsoft.com> a écrit dans le message de news:
3289DB51-C0F2-43E4-9D8E-45F0FA42F98A@microsoft.com...
> 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.
>
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. >
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. >
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" <Mystique@discussions.microsoft.com> a écrit dans le message de
news: A68F66E8-29A9-47C3-B7B8-6DF4B2AB721E@microsoft.com...
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" <Mystique@discussions.microsoft.com> a écrit dans le message
de news:
3289DB51-C0F2-43E4-9D8E-45F0FA42F98A@microsoft.com...
> 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.
>
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. >
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.
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
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