private void RunQueryBtn_Click(object sender, RoutedEventArgs e) { MainWindow mainWindow = (MainWindow)GetTopLevelControl(this.ShortCutsToolBar); isAllTabValidated = mainWindow.ValidateAllTabCntrls(this); SelectQueryBuilder queryBuilder = mainWindow.LoadSelectQueryBuilderNew(this); string queryString; if (queryBuilder != null) { queryString = queryBuilder.BuildQuery(); } XmlSerializer SerializerObj = new XmlSerializer(typeof(SelectQueryBuilder)); StringWriter writer = new StringWriter(); SerializerObj.Serialize(writer, queryBuilder); DateTime startTime = DateTime.Now; TabItem rvctabItem = RVCTAbControl.SelectedItem as TabItem; if (XmlSQLTabTxt.Text != null && rvctabItem.Name == "XmlSQLTab") { try { connectionString = ConfigurationManager.AppSettings["DefaultDBConn"]; CurrentDatabaseName = ConfigurationManager.AppSettings["DefaultDatabase"]; connectionString = connectionString + "Database=" + CurrentDatabaseName + ";"; DataTable dataTable = new DataTable(); string sqldata = ""; dataTable = (MySQLData.DataAccess.ADODataBridge.getData(connectionString, XmlSQLTabTxt.Text)); DataView dataView = new DataView(dataTable); ResultViewModel rvm = new ResultViewModel(dataView); MainGirdViewControl mainGridView1 = new MainGirdViewControl(queryBuilder, mainWindow.CurrentDatabaseName, sqldata); CloseableTabItem tabItem = (CloseableTabItem)this.ResultTab; rvm.isModified = true; rvm.isNew = true; mainGridView1.DataContext = rvm; tabItem.Content = mainGridView1; mainGridView1.MainDataGrid.Width = dataTable.Columns.Count * 160; mainGridView1.MainDataGrid.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; this.DataContext = rvm; this.ResultTab.IsSelected = true; lblXmlSQLTabErrorMessage.Visibility = System.Windows.Visibility.Hidden; } catch (MySql.Data.MySqlClient.MySqlException ex) { if (isErrorLoggingOn) { lblXmlSQLTabErrorMessage.Visibility = System.Windows.Visibility.Visible; lblXmlSQLTabErrorMessage.Height = 20; lblXmlSQLTabErrorMessage.Content = ex.Message; LogError.Log_Err("btnRunQuery_Click", ex); } } catch (Exception ex) { if (isErrorLoggingOn) { LogError.Log_Err("btnRunQuery_Click", ex); } } Mouse.OverrideCursor = null; } else if (isAllTabValidated) { if (mainWindow.queryString != String.Empty) { if (queryBuilder != null) { CloseableTabItem tabItem = (CloseableTabItem)this.ResultTab; if (tabItem.Content == null) { Mouse.OverrideCursor = Cursors.Wait; try { if (queryBuilder.CrossTabClause != null) { if (queryBuilder.CrossTabClause.Col == null) { MainGirdViewControl mainGridView1 = new MainGirdViewControl(queryBuilder, mainWindow.CurrentDatabaseName); result = mainGridView1.result; result.isModified = true; result.isNew = true; mainGridView1.DataContext = result; tabItem.Content = mainGridView1; mainGridView1.MainDataGrid.Width = result.EndColumn * 160; mainGridView1.MainDataGrid.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; this.DataContext = result; this.ResultTab.IsSelected = true; } else { if (this.StackPanelResultViewControl.Children.Count == 1) { if ((MainGirdViewControl)this.StackPanelResultViewControl.Children[0] != null) { this.StackPanelResultViewControl.Children.RemoveAt(0); } } CrossTabulationViewControl crossTabViewControl = new CrossTabulationViewControl(queryBuilder, mainWindow.CurrentDatabaseName); result = crossTabViewControl.result; this.StackPanelResultViewControl.Children.Add(crossTabViewControl); } } } catch (MySql.Data.MySqlClient.MySqlException ex) { if (isErrorLoggingOn) { LogError.Log_Err("btnRunQuery_Click", ex); } } catch (Exception ex) { if (isErrorLoggingOn) { LogError.Log_Err("btnRunQuery_Click", ex); } } Mouse.OverrideCursor = null; } else { ResultViewModel rv = (ResultViewModel)this.result; if (rv.isNew) { // we still let user run the query, query still new and modified= true Mouse.OverrideCursor = Cursors.Wait; try { if (queryBuilder.CrossTabClause != null) { if (queryBuilder.CrossTabClause.Col == null) { if (queryBuilder.GroupByColumns.Count == 0 && queryBuilder.SelectedColumns.Count == 0) { foreach (SQLBuilder.Clauses.Column col in this.SelectTabCntrl.lstToSelecteColFrom.Items) { queryBuilder.SelectColumn(col); } } MainGirdViewControl mainGridView1 = new MainGirdViewControl(queryBuilder, mainWindow.CurrentDatabaseName); result = mainGridView1.result; result.isModified = true; result.isNew = true; mainGridView1.DataContext = result; tabItem.Content = mainGridView1; mainGridView1.MainDataGrid.Width = result.EndColumn * 160; mainGridView1.MainDataGrid.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; CloseableTabItem ti = (CloseableTabItem)mainWindow.tabControl1.SelectedItem; ti.labelStar.Content = "*"; this.DataContext = result; this.ResultTab.IsSelected = true; } else { if (this.StackPanelResultViewControl.Children.Count == 1) { if (this.StackPanelResultViewControl.Children[0] != null) { this.StackPanelResultViewControl.Children.RemoveAt(0); } } CrossTabulationViewControl crossTabViewControl = new CrossTabulationViewControl(queryBuilder, mainWindow.CurrentDatabaseName); result = crossTabViewControl.result; this.StackPanelResultViewControl.Children.Add(crossTabViewControl); this.ResultTab.IsSelected = true; } } } catch (MySql.Data.MySqlClient.MySqlException ex) { if (isErrorLoggingOn) { LogError.Log_Err("btnRunQuery_Click", ex); } } catch (Exception ex) { if (isErrorLoggingOn) { LogError.Log_Err("btnRunQuery_Click", ex); } } Mouse.OverrideCursor = null; } else { // it is old //check to see if old querybuilder and new querybuilder is same, if different CompairQueryBuilder retuns true if (mainWindow.CompairQueryBuilder(rv.QueryBulder, queryBuilder)) { Mouse.OverrideCursor = Cursors.Wait; try { string directoryPath = String.Empty; if (result != null) { if (result.directoryPath != null) { directoryPath = result.directoryPath; } } if (queryBuilder.CrossTabClause != null && queryBuilder.CrossTabClause.Col != null) { if (this.StackPanelResultViewControl.Children.Count == 1) { if (this.StackPanelResultViewControl.Children[0] != null) { this.StackPanelResultViewControl.Children.RemoveAt(0); } } CrossTabulationViewControl crossTabViewControl = new CrossTabulationViewControl(queryBuilder, mainWindow.CurrentDatabaseName); result = crossTabViewControl.result; this.StackPanelResultViewControl.Children.Add(crossTabViewControl); this.ResultTab.IsSelected = true; CloseableTabItem ti = (CloseableTabItem)mainWindow.tabControl1.SelectedItem; ti.labelStar.Content = "*"; } else { MainGirdViewControl mainGridView1 = new MainGirdViewControl(queryBuilder, mainWindow.CurrentDatabaseName); result = mainGridView1.result; mainGridView1.DataContext = result; tabItem.Content = mainGridView1; mainGridView1.MainDataGrid.Width = result.EndColumn * 160; mainGridView1.MainDataGrid.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; CloseableTabItem ti = (CloseableTabItem)mainWindow.tabControl1.SelectedItem; ti.labelStar.Content = "*"; } if (directoryPath != String.Empty) { result.directoryPath = directoryPath; } result.isModified = true; result.isNew = false; this.DataContext = result; this.ResultTab.IsSelected = true; } catch (MySql.Data.MySqlClient.MySqlException ex) { if (isErrorLoggingOn) { LogError.Log_Err("btnRunQuery_Click", ex); } } catch (Exception ex) { if (isErrorLoggingOn) { LogError.Log_Err("btnRunQuery_Click", ex); } } Mouse.OverrideCursor = null; } this.ResultTab.IsSelected = true; } } } } XmlSQLTabTxt.Text = queryBuilder.BuildQuery(); } Console.WriteLine("Cross Tabulation View Control execution time: " + (DateTime.Now - startTime)); }
public ResultViewControl(SQLBuilder.SelectQueryBuilder QuerryBuilder, string CurrentDatabaseName) { InitializeComponent(); if (QuerryBuilder.CrossTabClause != null) { if (QuerryBuilder.CrossTabClause.Col == null) { if (this.StackPanelResultViewControl.Children.Count == 0) { MainGirdViewControl mainGridView = new MainGirdViewControl(QuerryBuilder, CurrentDatabaseName); result = mainGridView.result; this.StackPanelResultViewControl.Children.Add(mainGridView); this.ResultTab.IsSelected = true; this.CustomQueryAccordion.SelectionMode = AccordionSelectionMode.ZeroOrMore; int mainGridWidth = (((FastDB.ResultViewModel)(mainGridView.MainDataGrid.DataContext)).EndColumn * 160); { mainGridView.MainDataGrid.Width = mainGridWidth; } mainGridView.MainDataGrid.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; //zahed } } else { if (this.StackPanelResultViewControl.Children.Count == 1) { if ((MainGirdViewControl)this.StackPanelResultViewControl.Children[0] != null) { this.StackPanelResultViewControl.Children.RemoveAt(0); } } CrossTabulationViewControl crossTabViewControl = new CrossTabulationViewControl(QuerryBuilder, CurrentDatabaseName); result = crossTabViewControl.result; this.ResultTab.IsSelected = true; this.CustomQueryAccordion.SelectionMode = AccordionSelectionMode.ZeroOrMore; this.StackPanelResultViewControl.Children.Add(crossTabViewControl); } } this.DataContext = result; }