Excel ファイルを読み取り、接続マネージャーの列の詳細を更新しようとするスクリプト タスクを作成しました。
ただし、エラーなしで実行されたとしても、変更は「保存」されないため、パッケージは列の以前の詳細を維持します。
プログラムが情報を読み取って保存した後 (ColumnNames[]、MaxWidth[] など)。
接続マネージャーの既存の列を削除します。
//INITIALIZE CONNECTION MANAGER OBJECTS ConnectionManager conn = Dts.Connections["Flat File Connection Manager"]; var connectionFlatF = (Wrapper.IDTSConnectionManagerFlatFile100)conn.InnerObject; foreach (Wrapper.IDTSConnectionManagerFlatFileColumn100 column in connectionFlatF.Columns) { connectionFlatF.Columns.Remove(column); }
列を作成し、関連する情報を割り当てます。
for (i = 0; i < ColumnNames.Count; i++) { //Add column Wrapper.IDTSConnectionManagerFlatFileColumn100 flatfilecolumn = (Wrapper.IDTSConnectionManagerFlatFileColumn100)connectionFlatF.Columns.Add(); //Add column details flatfilecolumn.ColumnType = "Delimited"; flatfilecolumn.ColumnDelimiter = "\t"; flatfilecolumn.ColumnWidth = 0; if (FinalType[i] == "[DT_STR]") { flatfilecolumn.MaximumWidth = Int32.Parse(MaxWidth[i]); } else if (FinalType[i] == "[DT_NUMERIC]") { flatfilecolumn.DataPrecision = Int32.Parse(Percision[i]); flatfilecolumn.DataScale = Int32.Parse(Scale[i]); } //Column name Wrapper.IDTSName100 columnname = (Wrapper.IDTSName100)flatfilecolumn; columnname.Name = ColumnNames[i]; } conn.Dispose();