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; } } } } }
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); } } }