Skip to content

Commit 15ab505

Browse files
committed
Handle Adding and Deleting columns in the Source File...
git-tfs-id: [https://martin-source.visualstudio.com/DefaultCollection]$/IntegrationServices/Main;C109
1 parent e75f575 commit 15ab505

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

TextFileSplitter/TextFileSplitter2012/TextFileSplitter.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -848,9 +848,37 @@ public override void ReinitializeMetaData()
848848
{
849849
ConnectionManager cm = Microsoft.SqlServer.Dts.Runtime.DtsConvert.GetWrapper(ComponentMetaData.RuntimeConnectionCollection[0].ConnectionManager);
850850
IDTSConnectionManagerFlatFile100 connectionFlatFile = cm.InnerObject as IDTSConnectionManagerFlatFile100;
851+
if (connectionFlatFile.Columns.Count > passThroughOutput.OutputColumnCollection.Count)
852+
{
853+
for (int i = passThroughOutput.OutputColumnCollection.Count; i < connectionFlatFile.Columns.Count; i++)
854+
{
855+
IDTSConnectionManagerFlatFileColumn100 FFcolumn = connectionFlatFile.Columns[i];
856+
IDTSOutputColumn100 outColumn = passThroughOutput.OutputColumnCollection.New();
857+
ManageColumns.SetOutputColumnDefaults(outColumn, connectionFlatFile.CodePage);
858+
ManageProperties.AddOutputColumnProperties(outColumn.CustomPropertyCollection);
859+
outColumn.Name = ((IDTSName100)FFcolumn).Name;
860+
outColumn.SetDataTypeProperties(FFcolumn.DataType, FFcolumn.MaximumWidth, FFcolumn.DataPrecision, FFcolumn.DataScale, connectionFlatFile.CodePage);
861+
IDTSExternalMetadataColumn100 eColumn = passThroughOutput.ExternalMetadataColumnCollection.New();
862+
eColumn.Name = outColumn.Name;
863+
eColumn.DataType = outColumn.DataType;
864+
eColumn.Precision = outColumn.Precision;
865+
eColumn.Scale = outColumn.Scale;
866+
eColumn.Length = outColumn.Length;
867+
outColumn.ExternalMetadataColumnID = eColumn.ID;
868+
}
869+
}
870+
else if (connectionFlatFile.Columns.Count < passThroughOutput.OutputColumnCollection.Count)
871+
{
872+
while (connectionFlatFile.Columns.Count < passThroughOutput.OutputColumnCollection.Count)
873+
{
874+
passThroughOutput.OutputColumnCollection.RemoveObjectByIndex(passThroughOutput.OutputColumnCollection.Count - 1);
875+
passThroughOutput.ExternalMetadataColumnCollection.RemoveObjectByIndex(passThroughOutput.OutputColumnCollection.Count - 1);
876+
}
877+
}
851878
for (int i = 0; i < connectionFlatFile.Columns.Count; i++)
852879
{
853880
IDTSOutputColumn100 outColumn = passThroughOutput.OutputColumnCollection[i];
881+
IDTSExternalMetadataColumn100 eColumn = passThroughOutput.ExternalMetadataColumnCollection[i];
854882
IDTSConnectionManagerFlatFileColumn100 FFcolumn = connectionFlatFile.Columns[i];
855883
if ((FFcolumn.MaximumWidth != outColumn.Length)
856884
|| (FFcolumn.DataType != outColumn.DataType)
@@ -861,6 +889,13 @@ public override void ReinitializeMetaData()
861889
{
862890
outColumn.SetDataTypeProperties(FFcolumn.DataType, FFcolumn.MaximumWidth, FFcolumn.DataPrecision, FFcolumn.DataScale, connectionFlatFile.CodePage);
863891
outColumn.Name = ((IDTSName100)FFcolumn).Name;
892+
eColumn.Name = ((IDTSName100)FFcolumn).Name;
893+
eColumn.Name = outColumn.Name;
894+
eColumn.DataType = outColumn.DataType;
895+
eColumn.Precision = outColumn.Precision;
896+
eColumn.Scale = outColumn.Scale;
897+
eColumn.Length = outColumn.Length;
898+
outColumn.ExternalMetadataColumnID = eColumn.ID;
864899
}
865900
}
866901
}

0 commit comments

Comments
 (0)