IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

[SQL 2000] DTS : saut d'une tache dans une DTS


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 95
    Points : 66
    Points
    66
    Par défaut [SQL 2000] DTS : saut d'une tache dans une DTS
    Bonjour,
    La techno est un peu ancienne mais peut-être que certains d'entre vous ont eu par le passé à résoudre mon soucis : je souhaite sauter l'exécution d'une ou plusieurs taches sql selon l'état d'une variable du lot DTS
    J'ai trouvé et appliqué ceci : http://www.sqldts.com/214.aspx mais celà ne marche pas (ou je m'y prend mal) si je veux faire un saut de plusieurs tache et non pas d'une seule

    merci pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonsoir,

    Quelle est votre erreur exactement ?

    Et en utilisant une variable globale qui va contrôler le numéro d'étape à exécuter ?

    Exemple : On passe de la tâche 1 à la tâche 4 en assignant à la variable globale SkipTask la valeur 4 dans la tâche 1

    Task1 --> DTSGlobalVariables("SkipTask").Value = 4 -->
    Task2 Skip --> If DTSGlobalVariables("SkipTask").Value <> 2 Then .... -->
    Task3 Skip --> If DTSGlobalVariables("SkipTask").Value <> 3 Then ... -->
    Task4 ....

    ++

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 95
    Points : 66
    Points
    66
    Par défaut
    Merci pour votre aide.
    Je n'ai pas d'erreur à proprement parler, juste des sauts qui se font pas bien.
    Si je ne fait que le code que vous indiquez avant chaque tache sql ou transformation, j'ai bien un saut, mais aucune reprise sur la première tache qui n'a pas le code que vous indiquez.

    Si j'utilise le code dont j'ai donné le lien ci-dessus, tout va bien quand je ne saute qu'un seul traitement (tache sql, script active x) mais celà fait n'importe quoi (saut puis reprise à des endroits non voulus, puis à nouveau des sauts...)

    Dans l'exemple qui figure sur le site dont je donne le lien, c'est ce code qui fait que la dts reprend son exécution après le lot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		oStep.PrecedenceConstraints(1).PrecedenceBasis = _
    			DTSStepPrecedenceBasis_ExecStatus
    		oStep.PrecedenceConstraints(1).Value = _
    			DTSStepExecStat_Inactive
    Le problème c'est que je ne le comprend pas suffisemment pour savoir que mettre pour sauter plusieurs taches...

  4. #4
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bon vous m'avez rendu curieux et je me suis repenché dans mes souvenirs de lots DTS sur SQL Server 2000 , tout une époque ...

    Bref, j'ai essayé de reproduire ce que vous vouliez faire en me basant sur l'exemple du site que vous nous avez fourni

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Task1 --> Task2Skip --> Task3Skip --> TaskFinal
    Pour les Task2Skip et Task3Skip dans les propriétés du flux de travail il faut renseigner le nom de l'étape du flux suivant

    Pour Task2Skip :
    Clic droit sur l'étape > Flux de travail > Propriété du flux de travail > Onglet option > Nom : "DTSStep_DTSActiveScriptTask_3" dans mon cas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    ' (SkipTask 2)
    Option Explicit
     
    Function Main()
     
    Dim oPkg, oStep
     
    ' On récupère le nom de l'étape suivante pour la tâche Task3
     
    Set oPkg = DTSGlobalVariables.Parent
    Set oStep = oPkg.Steps("DTSStep_DTSActiveScriptTask_3")
     
    If DTSGlobalVariables("SkipTask").Value Then
    ' Update the following task's precedence constraint
    ' - Execution status of inactive
    oStep.PrecedenceConstraints(1).PrecedenceBasis = _
    DTSStepPrecedenceBasis_ExecStatus
    oStep.PrecedenceConstraints(1).Value = _
    DTSStepExecStat_Inactive
     
    Main = DTSStepScriptResult_DontExecuteTask
    Else
    ' Update the following task's precedence constraint
    ' - Execution result of success
    oStep.PrecedenceConstraints(1).PrecedenceBasis = _
    DTSStepPrecedenceBasis_ExecResult
    oStep.PrecedenceConstraints(1).Value = _
    DTSStepExecResult_Success
     
    Main = DTSStepScriptResult_ExecuteTask
    End If
     
    Set oStep = Nothing
    End Function
    Même chose pour Task3Skip, on récupère le nom de l'étape associée à la tâche finale ("DTSStep_DTSActiveScriptTask_4" dans mon cas)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    '(SkipTask 3)
    Option Explicit
     
    Function Main()
     
    	Dim oPkg, oStep
     
    	' Get the FinalTask Step
    	Set oPkg = DTSGlobalVariables.Parent
    	Set oStep = oPkg.Steps("DTSStep_DTSActiveScriptTask_4")
     
    	If DTSGlobalVariables("SkipTask").Value Then
    		' Update the following task's precedence constraint
    		' - Execution status of inactive
    		oStep.PrecedenceConstraints(1).PrecedenceBasis = _
    			DTSStepPrecedenceBasis_ExecStatus
    		oStep.PrecedenceConstraints(1).Value = _
    			DTSStepExecStat_Inactive
     
    		Main = DTSStepScriptResult_DontExecuteTask
    	Else
    		' Update the following task's precedence constraint
    		' - Execution result of success
    		oStep.PrecedenceConstraints(1).PrecedenceBasis = _
    			DTSStepPrecedenceBasis_ExecResult
    		oStep.PrecedenceConstraints(1).Value = _
    			DTSStepExecResult_Success
     
    		Main = DTSStepScriptResult_ExecuteTask
    	End If
     
    	Set oStep = Nothing
    End Function
    J'ai testé le bon déroulement du workflow et ca fonctionne

    ++

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 95
    Points : 66
    Points
    66
    Par défaut
    Merci beaucoup du temps que vous avez pris.
    En fait, je me hai.
    Je voulait déespéremment n'effectuer le saut que grace à un seul script et mettais, dans votre exemple,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET oStep = oPkg.Steps("DTSStep_DTSActiveScriptTask_4")
    directement dans le script du saut de la tache n°2.
    Celà n'a jamais marché, quoi que je fasse.

    Du coup, j'ai même pas pensé à duppliquer ce code sur chaque lot que je souhaitais sauter...

    Ca marche très bien comme ça, je vais pas chercher plus loin !

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo