Bonjour à tous,


J'ai un petit soucis concernant la programmation du composant script dans le "flux de données".

Mon projet consiste à programmer un package dit squelette, à partir d'un service windows en vb.net, pour générer un package utilisable dans un contexte donné.


Dans mon package, j'ai une "tâche de flux de données" contenant :
- une source de fichier plat
- un composant de script
- un composant de row count
- une destination oleDb


Lorsque je n'implémente pas de composant de script, je n'ai aucun problème pour la programmation du package, ni l'éxecution des packages générés; par contre, quand je programme mon composant de script pour lui affecter correctement les colonnes d'entrées, de sorties, d'erreurs, ... je perd le script de la classe ScriptMain ...


Pour informations complémentaires, voici le code que j'utilise pour programmer ce composant de script :


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
 
 
' 2 Configure the Script component '
 
Dim componentSyntax As IDTSComponentMetaData90 = dataflowTask.ComponentMetaDataCollection("SyntaxComponent")
Dim wrapperSyntax As CManagedComponentWrapper = componentSyntax.Instantiate()
wrapperSyntax.ProvideComponentProperties()
wrapperSyntax.AcquireConnections(Nothing)
wrapperSyntax.ReinitializeMetaData()
wrapperSyntax.ReleaseConnections()
componentSyntax.Name = "SyntaxComponent"
dataflowTask.PathCollection("Flat File Source Output").AttachPathAndPropagateNotifications(componentSource.OutputCollection(0), componentSyntax.InputCollection(0))
 
' Map input columns '
Dim input As IDTSInput90 = componentSyntax.InputCollection(0)
Dim externalMetadataColumns As Hashtable = New Hashtable
For Each externalMetadataColumn As IDTSExternalMetadataColumn90 In input.ExternalMetadataColumnCollection
	externalMetadataColumns.Add(externalMetadataColumn.Name, externalMetadataColumn)
Next
 
Dim vInput As IDTSVirtualInput90 = input.GetVirtualInput
' Iterate the inputs of the component '
For Each vColumn As IDTSVirtualInputColumn90 In vInput.VirtualInputColumnCollection
	If externalMetadataColumns.Contains(vColumn.Name) Then
		Dim vCol As IDTSInputColumn90 = wrapperSyntax.SetUsageType(input.ID, vInput, vColumn.LineageID, DTSUsageType.UT_READWRITE)
			If Not vCol Is Nothing And externalMetadataColumns.Contains(vCol.Name) Then
				wrapperSyntax.MapInputColumn(input.ID, vCol.ID, input.ExternalMetadataColumnCollection(vColumn.Name).ID)
			End If
		End If
Next
 
[.......]
 
dataflowTask.PathCollection("IsValid").AttachPathAndPropagateNotifications(componentSyntax.OutputCollection(0), componentRowCountOk.InputCollection(0))

Ma question est donc de savoir comment ne pas perdre le script de mon composant ...



Merci d'avance à tous pour toute réponse




Ben