/// <summary> /// Initializes a new instance of the <see cref="ImportProcedureForm"/> class. /// </summary> /// <param name="dbProcedure">The Procedure DB object selected by the users to import data from.</param> /// <param name="importToWorksheetName">The name of the Excel worksheet where data will be imported.</param> public ImportProcedureForm(DbProcedure dbProcedure, string importToWorksheetName) { if (dbProcedure == null) { throw new ArgumentNullException("dbProcedure"); } _dbProcedure = dbProcedure; _previewDataSet = null; _procedureParamsProperties = new PropertiesCollection(); _selectedResultSetIndex = -1; _sumOfResultSetsExceedsMaxCompatibilityRows = false; _workbookInCompatibilityMode = Globals.ThisAddIn.ActiveWorkbook.Excel8CompatibilityMode; InitializeComponent(); Text = @"Import Data - " + importToWorksheetName; ProcedureNameLabel.Text = dbProcedure.Name; OptionsWarningLabel.Text = Resources.ImportDataWillBeTruncatedWarning; ParametersPropertyGrid.SelectedObject = _procedureParamsProperties; AddSummaryFieldsCheckBox.Enabled = Settings.Default.ImportCreateExcelTable; InitializeMultipleResultSetsCombo(); PrepareParameters(); }
/// <summary> /// Method cache procedure to class mapping /// </summary> /// <param name="type">Class of procedure</param> /// <param name="connectionString">Connection string</param> private static void CacheProcedure(Type type, string connectionString) { DbProcedureAttr procAttr = (DbProcedureAttr)type.GetCustomAttributes(typeof(DbProcedureAttr), false).FirstOrDefault(); if (procAttr == null) throw new ArgumentException("Input type has not DbProcedureAttr attribute"); DbProcedure proc = new DbProcedure() { Class = type, Name = procAttr.Name.ToUpper(), Database = connectionString, Perameters = new List<DbParameter>() }; Dictionary<string, string> properties = new Dictionary<string, string>(); foreach (var prop in type.GetProperties()) { DbParameterAttr attr = (DbParameterAttr)prop.GetCustomAttributes(typeof(DbParameterAttr), false).FirstOrDefault(); if (attr == null) continue; DbParameter param = new DbParameter(); param.OrdinalNumber = attr.OrdinalNumber; param.Name = String.IsNullOrEmpty(attr.Name) ? prop.Name.ToUpper() : attr.Name.ToUpper(); param.Property = prop; proc.Perameters.Add(param); } cachedProcedures.Add(proc); }
/// <summary> /// Initializes a new instance of the <see cref="ImportProcedureForm"/> class. /// </summary> /// <param name="dbProcedure">The Procedure DB object selected by the users to import data from.</param> /// <param name="importToWorksheetName">The name of the Excel worksheet where data will be imported.</param> public ImportProcedureForm(DbProcedure dbProcedure, string importToWorksheetName) { _dbProcedure = dbProcedure ?? throw new ArgumentNullException(nameof(dbProcedure)); _previewDataSet = null; _procedureParamsProperties = new PropertiesCollection(); _selectedResultSetIndex = -1; InitializeComponent(); Text = @"Import Data - " + importToWorksheetName; ProcedureNameLabel.Text = dbProcedure.Name; OptionsWarningLabel.Text = Resources.ImportDataWillBeTruncatedWarning; ParametersPropertyGrid.SelectedObject = _procedureParamsProperties; AddSummaryFieldsCheckBox.Enabled = Settings.Default.ImportCreateExcelTable; ImportResultsetsComboBox.InitializeComboBoxFromEnum(DbProcedure.ProcedureResultSetsImportType.SelectedResultSet); PrepareParameters(); InitializeCellStyles(); }