1

Excel ファイルを読み取り、接続マネージャーの列の詳細を更新しようとするスクリプト タスクを作成しました。

ただし、エラーなしで実行されたとしても、変更は「保存」されないため、パッケージは列の以前の詳細を維持します。

プログラムが情報を読み取って保存した後 (ColumnNames[]、MaxWidth[] など)。

  1. 接続マネージャーの既存の列を削除します。

    //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);
        }
    
  2. 列を作成し、関連する情報を割り当てます。

     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();
    
4

0 に答える 0