예제 #1
0
        private void LoadFromFileButton_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog openDialog = new OpenFileDialog())
            {
                openDialog.Filter      = "Excel Files (*.xlsx)|*.xlsx|All files (*.*)|*.*";
                openDialog.FilterIndex = 1;

                if (openDialog.ShowDialog() == DialogResult.OK)
                {
                    clearDateTimePickers();
                    clearAvailableListboxes();
                    DateAttributeCombobox.Items.Clear();
                    try
                    {
                        CubeCompareSettings ccSettings = new CubeCompareSettings(openDialog.FileName);


                        foreach (DataRow row in ccSettings.connections.Rows)
                        {
                            int rowOrder = Convert.ToInt32(row[0].ToString());
                            if (rowOrder > 0 && rowOrder <= cubeConnections.Length)
                            {
                                cubeConnections[rowOrder - 1].DatasourceTextbox.Text = row[1].ToString();
                                cubeConnections[rowOrder - 1].CatalogTextbox.Text    = row[2].ToString();
                                cubeConnections[rowOrder - 1].CubeTextbox.Text       = row[3].ToString();

                                if (row[4] != DBNull.Value)
                                {
                                    cubeConnections[rowOrder - 1].StartDatePicker.Checked = true;
                                    cubeConnections[rowOrder - 1].StartDatePicker.Format  = DateTimePickerFormat.Short;
                                    cubeConnections[rowOrder - 1].StartDatePicker.Value   = Convert.ToDateTime(row[4]);
                                }
                                if (row[5] != DBNull.Value)
                                {
                                    cubeConnections[rowOrder - 1].EndDatePicker.Checked = true;
                                    cubeConnections[rowOrder - 1].EndDatePicker.Format  = DateTimePickerFormat.Short;
                                    cubeConnections[rowOrder - 1].EndDatePicker.Value   = Convert.ToDateTime(row[5]);
                                }
                            }
                        }

                        // Measures
                        foreach (DataRow row in ccSettings.measures.Rows)
                        {
                            QueryMeasuresListBox.Items.Add(row[1].ToString());
                        }

                        // Attributes
                        foreach (DataRow row in ccSettings.rowLabels.Rows)
                        {
                            QueryAttributesListbox.Items.Add(row[1].ToString());
                        }
                        // Filters
                        foreach (DataRow row in ccSettings.filters.Rows)
                        {
                            QueryFiltersListBox.Items.Add(row[1].ToString());
                        }
                        // Thresholds
                        if (ccSettings.thresholds.Rows.Count > 0)
                        {
                            MaximumDifferenceTextbox.Text = ccSettings.thresholds.Rows[0][1].ToString();
                            MaximumPercentageTextbox.Text = ccSettings.thresholds.Rows[0][2].ToString();
                        }
                        // Other Settings
                        foreach (DataRow row in ccSettings.settings.Rows)
                        {
                            if (row[0].ToString() == "Output Folder")
                            {
                                OutputFolderTextbox.Text = row[1].ToString();
                            }
                            else if (row[0].ToString() == "Date Dimension")
                            {
                                DateAttributeCombobox.Items.Add(row[1].ToString());
                                DateAttributeCombobox.SelectedIndex = 0;
                            }
                            else if (row[0].ToString() == "Excel file per measure group")
                            {
                                if (row[1].ToString() == "YES")
                                {
                                    FilePerMeasureGroupCheckbox.Checked = true;
                                }
                                else if (row[1].ToString() == "NO")
                                {
                                    FilePerMeasureGroupCheckbox.Checked = false;
                                }
                            }
                        }

                        enableRunButton(openDialog.FileName);
                    }
                    catch (System.IO.IOException ex)
                    {
                        if (ex.Message.Contains("used by another process"))
                        {
                            MessageBox.Show("Unable to open file.\nThe following file is being used by another process: "
                                            + openDialog.FileName + ".",
                                            "Unable to open file.",
                                            MessageBoxButtons.OK,
                                            MessageBoxIcon.Error);
                        }
                        else
                        {
                            throw ex;
                        }
                    }
                    catch (Exception ex)
                    {
                        if (ex.Message.Contains("There isn't a worksheet named"))
                        {
                            MessageBox.Show("Error loading data from file.\n"
                                            + ex.Message,
                                            "Unable to read file.",
                                            MessageBoxButtons.OK,
                                            MessageBoxIcon.Error);
                        }
                        else if (ex.Message.Contains("Missing table in spreadsheet"))
                        {
                            MessageBox.Show("Error loading data from file.\n"
                                            + ex.Message,
                                            "Unable to read file.",
                                            MessageBoxButtons.OK,
                                            MessageBoxIcon.Error);
                        }
                        else if (ex.Message.Contains("Input in invalid format at"))
                        {
                            MessageBox.Show("Error loading data from file.\n"
                                            + ex.Message,
                                            "Unable to read file.",
                                            MessageBoxButtons.OK,
                                            MessageBoxIcon.Error);
                        }
                        else
                        {
                            throw ex;
                        }
                    }
                }
            }
        }
예제 #2
0
        private void SaveAsButton_Click(object sender, EventArgs e)
        {
            // Validate inputs
            // Threshold validation
            double placeholder;

            if (!string.IsNullOrEmpty(MaximumDifferenceTextbox.Text) &&
                !double.TryParse(MaximumDifferenceTextbox.Text, out placeholder))
            {
                MessageBox.Show("Maximum Difference in incorrect format.\n",
                                "Invalid input.",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                return;
            }
            if (!string.IsNullOrEmpty(MaximumPercentageTextbox.Text) &&
                !double.TryParse(MaximumPercentageTextbox.Text, out placeholder))
            {
                MessageBox.Show("Maximum Percentage in incorrect format.\n",
                                "Invalid input.",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                return;
            }

            // Create and load a CubeCompareSettings
            CubeCompareSettings ccSettings = new CubeCompareSettings();

            List <string> measureNames   = new List <string>();
            List <string> attributeNames = new List <string>();
            List <string> filterNames    = new List <string>();

            // For connections
            // Setup date values first
            DateTime?dtsd1 = StartDate1DateTimePicker.Checked ? (DateTime?)StartDate1DateTimePicker.Value : null;
            DateTime?dted1 = EndDate1DateTimePicker.Checked ? (DateTime?)EndDate1DateTimePicker.Value : null;
            DateTime?dtsd2 = StartDate2DateTimePicker.Checked ? (DateTime?)StartDate2DateTimePicker.Value : null;
            DateTime?dted2 = EndDate2DateTimePicker.Checked ? (DateTime?)EndDate2DateTimePicker.Value : null;

            ccSettings.connections.Rows.Add(1,
                                            Datasource1Textbox.Text,
                                            Catalog1Textbox.Text,
                                            Cube1Textbox.Text,
                                            dtsd1,
                                            dted1);
            ccSettings.connections.Rows.Add(2,
                                            Datasource2Textbox.Text,
                                            Catalog2Textbox.Text,
                                            Cube2Textbox.Text,
                                            dtsd2,
                                            dted2);

            // For measures
            foreach (object o in QueryMeasuresListBox.Items)
            {
                measureNames.Add(o.ToString());
            }

            ccSettings.addmeasures(measureNames);

            // For row labels
            foreach (object o in QueryAttributesListbox.Items)
            {
                attributeNames.Add(o.ToString());
            }

            ccSettings.addrowLabels(attributeNames);

            // For filters
            foreach (object o in QueryFiltersListBox.Items)
            {
                filterNames.Add(o.ToString());
            }

            ccSettings.addfilters(filterNames);

            // For thresholds, if blank, submit null.
            ccSettings.thresholds.Rows.Add(null,
                                           MaximumDifferenceTextbox.Text != "" ? MaximumDifferenceTextbox.Text : null,
                                           MaximumPercentageTextbox.Text != "" ? MaximumPercentageTextbox.Text : null);

            // For (other) settings
            ccSettings.settings.Rows.Add("Output Folder", OutputFolderTextbox.Text);
            ccSettings.settings.Rows.Add("Date Dimension", DateAttributeCombobox.Text);
            if (FilePerMeasureGroupCheckbox.Checked)
            {
                ccSettings.settings.Rows.Add("Excel file per measure group", "YES");
            }
            else
            {
                ccSettings.settings.Rows.Add("Excel file per measure group", "NO");
            }


            // Get file location and name then save to that filepath.
            using (SaveFileDialog saveDialog = new SaveFileDialog())
            {
                saveDialog.Filter      = "Excel Files (*.xlsx)|*.xlsx|All files (*.*)|*.*";
                saveDialog.FilterIndex = 1;

                if (saveDialog.ShowDialog() == DialogResult.OK)
                {
                    ccSettings.saveTo(saveDialog.FileName);
                    // Enable to run from this file.
                    enableRunButton(saveDialog.FileName);
                }
            }
        }