Exemplo n.º 1
0
        private void ProcessTables(SQLJoinRules buildNewSQL)
        {
            TablesAndViewsUI.PrepareSelectedTables();
            if (buildNewSQL.BuildJoin())
            {
                editBox.Text = buildNewSQL.SQLString;
            }
            else
            {
                editBox.Text = "Finding needed tables to build query";
                //editBox.Text = "One or more Tables found with no relevent relationships.\r\n\r\n";
                bool             processAgain = false;
                List <TableName> stillNone    = new List <TableName>();
                foreach (TableName aTable in buildNewSQL.NoRelationFound)
                {
                    //editBox.Text += aTable.Name + "\r\n";
                    List <Joiner> joins = new List <Joiner>();
                    if (TableRelationShips.FindNeededTable(aTable, TablesAndViewsUI.AllTables, TablesAndViewsUI.SelectedTables, joins))
                    {
                        var excludeIteratedTable = TablesAndViewsUI.SelectedTables.Tables.Where(x => !x.Name.Equals(aTable.Name)).ToList();
                        //joiners can be further resolved to find more distant relationships, will need a class for that kind of processing.
                        var joiner = TableRelationShips.CheckForeignKeyTables(joins, excludeIteratedTable);

                        if (joiner != null && !TablesAndViewsUI.SelectedTables.Tables.Any(x => x.Name.Equals(joiner.Table1.Name)))
                        {
                            TablesAndViewsUI.ExternallyCheckTable(joiner.Table1.Name);
                            //TablesAndViewsUI.SelectedTables.Tables.Add(joiner.Table1);
                            //TablesAndViewsUI.PrepareTable(TablesAndViewsUI.SelectedTables.Tables[TablesAndViewsUI.SelectedTables.Tables.Count - 1]);
                            processAgain = true;
                        }
                    }
                    else
                    {
                        stillNone.Add(aTable);
                    }
                }

                if (processAgain)
                {
                    ProcessTables(buildNewSQL);
                }
                else
                {
                    editBox.Text = "No relationships found to complete query build";
                }
            }
        }
Exemplo n.º 2
0
 private void btnAddTables_Click(object sender, EventArgs e)
 {
     editBox.Text += TablesAndViewsUI.GetSelectedTables();
 }