public override void Exec() { try { UIHierarchy solExplorer = this.ApplicationObject.ToolWindows.SolutionExplorer; UIHierarchyItem hierItem = ((UIHierarchyItem)((System.Array)solExplorer.SelectedItems).GetValue(0)); ProjectItem pi = (ProjectItem)hierItem.Object; Window win = pi.Document.ActiveWindow; IDesignerHost designer = (IDesignerHost)pi.Document.ActiveWindow.Object; Package package = null; ConnectionManager conn = GetSelectedConnectionManager(designer, out package); BIDSHelper.SSIS.FixedWidthColumnsForm form = new BIDSHelper.SSIS.FixedWidthColumnsForm(); if (conn != null && conn.Properties["Format"].GetValue(conn).ToString() == "FixedWidth") { //hiding properties for ragged right form.dataGridView1.Height = form.dataGridView1.Height + 50 + 26; form.dataGridView1.Top -= 50; form.label1.Height -= 50; form.cboRaggedRightDelimiter.Visible = false; form.lblRaggedRight.Visible = false; } DialogResult dialogResult = form.ShowDialog(); if (dialogResult == DialogResult.OK) { #if KATMAI || DENALI || SQL2014 wrap.IDTSConnectionManagerFlatFile100 ff = conn.InnerObject as wrap.IDTSConnectionManagerFlatFile100; DtsConvert.GetExtendedInterface(conn); #else wrap.IDTSConnectionManagerFlatFile90 ff = conn.InnerObject as wrap.IDTSConnectionManagerFlatFile90; DtsConvert.ToConnectionManager90(conn); #endif while (ff.Columns.Count > 0) { ff.Columns.Remove(0); } List <string> listUsedNames = new List <string>(); //JCW - Added counter to identify the last column int columnCount = 1; foreach (DataGridViewRow row in form.dataGridView1.Rows) { string sName = row.Cells[0].Value.ToString().Trim(); string sOriginalName = sName; int i = 1; while (listUsedNames.Contains(sName)) //find a unique name for the column { sName = sOriginalName + (++i); } listUsedNames.Add(sName); #if KATMAI || DENALI || SQL2014 wrap.IDTSConnectionManagerFlatFileColumn100 col = ff.Columns.Add(); wrap.IDTSName100 name = col as wrap.IDTSName100; #else wrap.IDTSConnectionManagerFlatFileColumn90 col = ff.Columns.Add(); wrap.IDTSName90 name = col as wrap.IDTSName90; #endif name.Name = sName; col.MaximumWidth = int.Parse(row.Cells[1].Value.ToString()); col.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_STR; if (columnCount == form.dataGridView1.Rows.Count && form.cboRaggedRightDelimiter.Text != "[None]") { col.ColumnWidth = 0; col.ColumnType = "Delimited"; col.ColumnDelimiter = DecodeDelimiter(form.cboRaggedRightDelimiter.Text); } else { col.ColumnWidth = int.Parse(row.Cells[1].Value.ToString()); col.ColumnType = "FixedWidth"; } columnCount++; } //mark package object as dirty IComponentChangeService changesvc = (IComponentChangeService)designer.GetService(typeof(IComponentChangeService)); changesvc.OnComponentChanging(package, null); changesvc.OnComponentChanged(package, null, null, null); //marks the package designer as dirty SSISHelpers.MarkPackageDirty(package); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public override void Exec() { try { UIHierarchy solExplorer = this.ApplicationObject.ToolWindows.SolutionExplorer; UIHierarchyItem hierItem = ((UIHierarchyItem)((System.Array)solExplorer.SelectedItems).GetValue(0)); ProjectItem pi = (ProjectItem)hierItem.Object; Window win = pi.Document.ActiveWindow; IDesignerHost designer = (IDesignerHost)pi.Document.ActiveWindow.Object; Package package = null; ConnectionManager conn = GetSelectedConnectionManager(designer, out package); BIDSHelper.SSIS.FixedWidthColumnsForm form = new BIDSHelper.SSIS.FixedWidthColumnsForm(); if (conn != null && conn.Properties["Format"].GetValue(conn).ToString() == "FixedWidth") { //hiding properties for ragged right form.dataGridView1.Height = form.dataGridView1.Height + 50 + 26; form.dataGridView1.Top -= 50; form.label1.Height -= 50; form.cboRaggedRightDelimiter.Visible = false; form.lblRaggedRight.Visible = false; } DialogResult dialogResult = form.ShowDialog(); if (dialogResult == DialogResult.OK) { #if KATMAI || DENALI || SQL2014 wrap.IDTSConnectionManagerFlatFile100 ff = conn.InnerObject as wrap.IDTSConnectionManagerFlatFile100; DtsConvert.GetExtendedInterface(conn); #else wrap.IDTSConnectionManagerFlatFile90 ff = conn.InnerObject as wrap.IDTSConnectionManagerFlatFile90; DtsConvert.ToConnectionManager90(conn); #endif while (ff.Columns.Count > 0) ff.Columns.Remove(0); List<string> listUsedNames = new List<string>(); //JCW - Added counter to identify the last column int columnCount = 1; foreach (DataGridViewRow row in form.dataGridView1.Rows) { string sName = row.Cells[0].Value.ToString().Trim(); string sOriginalName = sName; int i = 1; while (listUsedNames.Contains(sName)) //find a unique name for the column { sName = sOriginalName + (++i); } listUsedNames.Add(sName); #if KATMAI || DENALI || SQL2014 wrap.IDTSConnectionManagerFlatFileColumn100 col = ff.Columns.Add(); wrap.IDTSName100 name = col as wrap.IDTSName100; #else wrap.IDTSConnectionManagerFlatFileColumn90 col = ff.Columns.Add(); wrap.IDTSName90 name = col as wrap.IDTSName90; #endif name.Name = sName; col.MaximumWidth = int.Parse(row.Cells[1].Value.ToString()); col.DataType = Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_STR; if (columnCount == form.dataGridView1.Rows.Count && form.cboRaggedRightDelimiter.Text != "[None]") { col.ColumnWidth = 0; col.ColumnType = "Delimited"; col.ColumnDelimiter = DecodeDelimiter(form.cboRaggedRightDelimiter.Text); } else { col.ColumnWidth = int.Parse(row.Cells[1].Value.ToString()); col.ColumnType = "FixedWidth"; } columnCount++; } //mark package object as dirty IComponentChangeService changesvc = (IComponentChangeService)designer.GetService(typeof(IComponentChangeService)); changesvc.OnComponentChanging(package, null); changesvc.OnComponentChanged(package, null, null, null); //marks the package designer as dirty SSISHelpers.MarkPackageDirty(package); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }