Beispiel #1
0
        void page_CreateNewConnection(object sender, EventArgs args)
        {
            IDtsConnectionService ConnectionService =
                (IDtsConnectionService)this.ServiceProvider.GetService(typeof(IDtsConnectionService));

            if (ConnectionService == null)
            {
                Exception ex = new InvalidOperationException("Connection Service Unavailable");
                this.ReportErrors(ex);
                return;
            }

            ArrayList connections = ConnectionService.CreateConnection("SSDS");

            if (connections != null && connections.Count > 0)
            {
                ConnectionManager cm = connections[connections.Count - 1] as ConnectionManager;

                this.ComponentMetadata.RuntimeConnectionCollection[0].ConnectionManagerID = cm.ID;
                this.ComponentMetadata.RuntimeConnectionCollection[0].ConnectionManager   =
                    DtsConvert.ToConnectionManager90(cm);
            }

            return;
        }
        private void connectionComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Special case: the <New...> item on the combo box causes us to try to create a new connection manager.
            if ((string)connectionComboBox.SelectedItem == "New connection")
            {
                // Fetch the IDtsConnectionService.  It provides facilities to present the user with
                // a new connection dialog, so they don't need to exit the (modal) UI to create one.
                IDtsConnectionService connService =
                    (IDtsConnectionService)serviceProvider_.GetService(typeof(IDtsConnectionService));
                System.Collections.ArrayList created = connService.CreateConnection("ADO.NET:SQL");

                // CreateConnection() returns back a list of connections that were created -- go ahead
                // and update our list with those new items.
                foreach (ConnectionManager cm in created)
                {
                    connectionComboBox.Items.Insert(0, cm.Name);
                }

                // If we created an item, we select it in the combo box, otherwise, clear the selection entirely.
                if (created.Count > 0)
                {
                    connectionComboBox.SelectedIndex = 0;
                }
                else
                {
                    connectionComboBox.SelectedIndex = -1;
                }
            }



            // No matter what, we set the current connection manager to the chosen item if it's real.
            if (connections_.Contains(connectionComboBox.SelectedItem))
            {
                this.component_.RuntimeConnectionCollection[0].ConnectionManager =
                    DtsConvert.ToConnectionManager90(connections_[connectionComboBox.SelectedItem]);

                this.component_.RuntimeConnectionCollection[0].ConnectionManagerID =
                    connections_[connectionComboBox.SelectedItem].ID;
            }

            needsNewMetaData_ = true;
        }
Beispiel #3
0
        void page_SetConnectionAttributes(object sender, ConnectionManagerElement args)
        {
            this.ClearErrors();

            try
            {
                foreach (ConnectionManager cm in this.Connections)
                {
                    if (cm.ID.Equals(args.ID, StringComparison.OrdinalIgnoreCase))
                    {
                        this.ComponentMetadata.RuntimeConnectionCollection[0].ConnectionManagerID = args.ID;
                        this.ComponentMetadata.RuntimeConnectionCollection[0].ConnectionManager   =
                            DtsConvert.ToConnectionManager90(cm);

                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                this.ReportErrors(ex);
            }
        }
        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);
            }
        }