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

SSIS Discussion :

[SSIS] [2K5] Exécuter des traitements sur des sous résultats


Sujet :

SSIS

  1. #1
    Membre régulier Avatar de SebastienM
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 310
    Points : 86
    Points
    86
    Par défaut [SSIS] [2K5] Exécuter des traitements sur des sous résultats
    Bonjour,

    Je rencontre (encore) un petit problème :
    J'ai un composant OLEDB d'entrée qui effectue un SELECT, puis une liste de traitements. Au bout de mon flux j'ai un OLEDB Command qui réalise un update.
    Je voudrais enchaîner un second OLEDB Command avec une requête de type "SELECT * FROM TABLE WHERE NOM = ?", le param_0 étant relié à un champ du OLEDB Command précédent.
    Le soucis, c'est que je n'arrive pas à récupérer mes champs du deuxième OLEDB Command.

    (voir pièce jointe)

    Comment faire ?

  2. #2
    Membre éclairé
    Avatar de patriceharel
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 466
    Points : 884
    Points
    884
    Par défaut
    Bonjour,

    Le composant OLEDB Command n'est pas conçu pour ajouter des colonnes au flux de données en fonction de la requête ou de la procédure stockée qu'il se charge d'exécuter. Un Select * from Table dans un OLEDB Command lance un ordre "Select" au moteur de base de données et... c'est tout.

    Le Oledb Command exécute une commande SQL pour chaque ligne du flux, il est donc utile pour de l'insertion, de la mise à jour etc.

  3. #3
    Membre habitué

    Inscrit en
    Août 2008
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 177
    Points : 125
    Points
    125
    Par défaut
    Utilise des variables, ça sert à ça.

  4. #4
    Membre régulier Avatar de SebastienM
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 310
    Points : 86
    Points
    86
    Par défaut
    N'existe-t-il pas l'équivalent de boucles ou quelque chose comme ça ?

    Je ne vois pas trop comment me sortir de ma galère mais je vais essayer d'expliquer mon problème, peut être aurez vous une solution :

    Voilà, j'ai une liste d'opérations dans une table
    comme ceci :

    138238 ; Objet 1 ; Operation 1 ; Engin A ; Sequence 1 ; ''
    138249 ; Objet 1 ; Operation 4 ; Engin T ; Sequence 2 ; ''
    138258 ; Objet 1 ; Operation 3 ; Engin Z ; Sequence 3 ; 'Date de livraison 12/03/09'
    132237 ; Objet 2 ; Operation 4 ; Engin B ; Sequence 1 ; ''
    131248 ; Objet 2 ; Operation 7 ; Engin N ; Sequence 2 ; ''
    139258 ; Objet 2 ; Operation 2 ; Engin A ; Sequence 3 ; 'Date de livraison 16/04/09'
    [...]

    J'ai une seconde table qui contient des délais, de la façon suivante :

    Operation 1 ; Engin A ; 5 jours
    Operation 7 ; Engin N ; 3 jours
    Operation 3 ; Engin Z ; 2 jours
    Operation 4 ; Engin T ; 2 jours
    [...]

    Maintenant je voudrais calculer les dates de livraison pour toutes les opérations non renseignées ; pour cela, il faut trier par objet et séquence décroissante, ensuite je prend la date de la sequence maximum par engin, je retranche la valeur correspondante pour l'opération. Par exemple pour l'objet 1 je voudrais obtenir ceci :

    138238 ; Objet 1 ; Operation 1 ; Engin A ; Sequence 1 ; '5/03/09'
    138249 ; Objet 1 ; Operation 4 ; Engin T ; Sequence 2 ; '10/03/09'
    138258 ; Objet 1 ; Operation 3 ; Engin Z ; Sequence 3 ; 'Date de livraison 12/03/09'

    N'existe-t-il pas l'équivalent de boucles ou quelque chose comme ça ?


    Pouvez vous m'aiguiller sur ce problème ?

    Merci d'avance (au moins pour avoir lu )

  5. #5
    Membre habitué

    Inscrit en
    Août 2008
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 177
    Points : 125
    Points
    125
    Par défaut
    Je crois que tu t'es emmêlé les pinceaux dans ton copier/coller...

    J'ai pas trop compris ton besoin, mais à mon avis pour ce genre d'algorithme de calcul, mieux vaut passer par un (ou plusieurs) script(s) en VB.net ou C#.

  6. #6
    Membre régulier Avatar de SebastienM
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 310
    Points : 86
    Points
    86
    Par défaut
    Désolé pour le copier / coller c'est corrigé.

    Oui je peux le faire en .NET je crois que je n'ai pas trop le choix.
    Il faut que je cherche comment exécuter une requete dans un script component, en utilisant une connexion existante (ouch)

  7. #7
    Membre habitué

    Inscrit en
    Août 2008
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 177
    Points : 125
    Points
    125
    Par défaut
    C'est pas trop compliqué, tu sélectionnes tes champs d'entrées, tu peux rajouter des colonnes de sortie et faire toutes les modifs et calculs que le langage autorise dans le script (cf. tuto)

    Sinon tu peux peut-être t'en sortir avec une jointure + tri + colonne dérivée (ou tu crées une nouvelle date),
    comme tu avait commencé à le faire dans ton premier exemple.

  8. #8
    Membre régulier Avatar de SebastienM
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 310
    Points : 86
    Points
    86
    Par défaut
    En fait ce que je voudrais faire, c'est exécuter une requete dans mon script component ; en utilisant mes connexions prédéfinies.

    Avez-vous des tuyaux là dessus ?

    car en fouillant le net je n'ai rien trouvé de tel.

    En fait je voudrais faire un truc dans le style :
    rSql = "SELECT * FROM SOUS_TABLE WHERE ID=" & Row.IDPARENT & ";"

    Puis en gros :
    result = execute(rSql)

    while not result.eof
    [...]
    end while

Discussions similaires

  1. Comment ajouter des séries dans des graphes sur des feuilles variables
    Par Molomarcopolo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2012, 17h26
  2. [JUnit] Effectuer des tests sur des traitements de fichiers
    Par Baptiste Wicht dans le forum Tests et Performance
    Réponses: 3
    Dernier message: 12/03/2010, 19h10
  3. Trigger pour mettre des droits sur des procedures et des vues
    Par briino dans le forum Développement
    Réponses: 3
    Dernier message: 23/09/2009, 10h44
  4. Réponses: 8
    Dernier message: 14/09/2006, 17h43
  5. traitement sur des secondes
    Par richou dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 20/03/2006, 12h00

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