OVH Cloud OVH Cloud

DTSTransformStatus et VBScript

3 réponses
Avatar
Christine
Bonjour

Je suis entrain de réaliser un lot DTS qui doit transférer les données d'un tableau Excel vers une base de données SQL Server. Je dois effectuer une inversion des colonnes et lignes du tableau avant d'effectuer toute insertion
Est-il possible de réaliser dans le même Active X
# chaque ligne Excel devient une colonne d'un tableau VBScript ; insertion bloquée au niveau de la destinatio
# quand le fichier Excel est totalement lu, ses lignes sont devenues les colonnes de mon tableau VBScript ; à partir de cet instant, je souhaite inserer chacune de ses lignes dans ma destination
En fait, je pense qu'une transformation fonctionne ligne par ligne et non par un aspect globale comme dans ce cas

Pourriez-vous m'aider ? Suis-je sur la bonne voie ou existe t'il une méthode plus simple

Merci d'avanc

Christin

3 réponses

Avatar
Bonjour

ajoute un script active x dans l'assistant de lot DTS ensuite utilise le
modèle objet de excel pour intervenir sur la feuille

voici un exmple tiré d'un de mes lots pour le modèle objet

'**********************************************************************
' Script Visual Basic ActiveX
'************************************************************************

Function Main()
Dim app 'As Excel.Application
Dim wkb' As Excel.Workbook

Set app = CreateObject("Excel.Application")

Set wkb = app.Workbooks.Open("MonServeur FichierOutmonfichier.XLS")

wkb.Sheets("Feuil2").Delete
wkb.Save


app.Quit

Main = DTSTaskExecResult_Success
End Function

tu a la possibilité d'utiliser la fonction de collage spéciale de
transposition essaie la sur ton tableau cela sera peut être plus rapide que
de cycler sur les colonnes

Sebastien



"Christine" a écrit dans le message de
news:
Bonjour,

Je suis entrain de réaliser un lot DTS qui doit transférer les


données d'un tableau Excel vers une base de données SQL Server. Je dois
effectuer une inversion des colonnes et lignes du tableau avant d'effectuer
toute insertion.
Est-il possible de réaliser dans le même Active X :
# chaque ligne Excel devient une colonne d'un tableau VBScript ;


insertion bloquée au niveau de la destination
# quand le fichier Excel est totalement lu, ses lignes sont devenues


les colonnes de mon tableau VBScript ; à partir de cet instant, je souhaite
inserer chacune de ses lignes dans ma destination.
En fait, je pense qu'une transformation fonctionne ligne par


ligne et non par un aspect globale comme dans ce cas.

Pourriez-vous m'aider ? Suis-je sur la bonne voie ou existe t'il


une méthode plus simple ?

Merci d'avance

Christine



Avatar
Oxiane
Si tu utilises une tâche de transformation de données entre une connection
Excel et une connection SQl Server, alors oui, tu va fonctionner ligne à
ligne (en gros le script est exécuté autant de fois qu'il y de lignes dans
la base source).

Tu peux par contre utiliser une "tâche de script Active X", qui ne va
s'exécuter qu'une seule fois, mais là, il faut que tu codes tout, et DTS
pert de son intérêt...

Le mieux me paraît de charger la table excel dans une table temporaire de
travail sous SQL, et d'alimenter la table réelle avec un lot DTS, ou une
proc stock, ou un ordre insert... select, etc

--
Cordialement

Oxiane
----------------------------------------------------------
Omnia vanitas

"Christine" a écrit dans le message de
news:
Bonjour,

Je suis entrain de réaliser un lot DTS qui doit transférer les


données d'un tableau Excel vers une base de données SQL Server. Je dois
effectuer une inversion des colonnes et lignes du tableau avant d'effectuer
toute insertion.
Est-il possible de réaliser dans le même Active X :
# chaque ligne Excel devient une colonne d'un tableau VBScript ;


insertion bloquée au niveau de la destination
# quand le fichier Excel est totalement lu, ses lignes sont devenues


les colonnes de mon tableau VBScript ; à partir de cet instant, je souhaite
inserer chacune de ses lignes dans ma destination.
En fait, je pense qu'une transformation fonctionne ligne par


ligne et non par un aspect globale comme dans ce cas.

Pourriez-vous m'aider ? Suis-je sur la bonne voie ou existe t'il


une méthode plus simple ?

Merci d'avance

Christine



Avatar
sebast22
Christine a écrit le 04/06/2004 à 13h41 :
Bonjour

Je suis entrain de réaliser un lot DTS qui doit
transférer les données d'un tableau Excel vers une base de
données SQL Server. Je dois effectuer une inversion des colonnes et
lignes du tableau avant d'effectuer toute insertion
Est-il possible de réaliser dans le même Active X
# chaque ligne Excel devient une colonne d'un tableau VBScript ; insertion
bloquée au niveau de la destinatio
# quand le fichier Excel est totalement lu, ses lignes sont devenues les
colonnes de mon tableau VBScript ; à partir de cet instant, je souhaite
inserer chacune de ses lignes dans ma destination
En fait, je pense qu'une transformation fonctionne ligne par ligne et
non par un aspect globale comme dans ce cas

Pourriez-vous m'aider ? Suis-je sur la bonne voie ou existe t'il une
méthode plus simple

Merci d'avanc

Christin


Bonjour ,

Oui , il faut ajouter cette partie de code dans tes VBScripts pour les exécuter avec une élévation :

'------------------------------------------------------------------------------------
If WScript.Arguments.length =0 Then
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "wscript.exe", Chr(34) & _
WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else
'------------------------------------------------------------------------------------

'Ajout de ton code ici

End If
'------------------------------------------------------------------------------------


Cordialement

Sebast22