Exemplo n.º 1
0
        private void btnOperacion_Click(object sender, EventArgs e)
        {
            bool      mostrarResultado = false;
            ArrayList columnas         = new ArrayList();
            ArrayList tuplas           = new ArrayList();
            String    algebraLineal    = "";
            String    SQL = "";

            //------------- Seleccion -------------
            if (cmbOperacion.SelectedIndex == 0)
            {
                if (txtTabla.Text.Trim() != "" && txtPredicado.Text.Trim() != "")
                {
                    if (MD.verificar_Tabla(BDActual, txtTabla.Text) == "existe")
                    {
                        //selecciona el esquema de la tabla
                        foreach (ArrayList NombresTablas in nombreTablas)
                        {
                            if (NombresTablas[0].ToString() == txtTabla.Text.Trim())
                            {
                                ArrayList TablaActual = NombresTablas;
                                columnas = MD.select_NombreColumnas(BDActual, txtTabla.Text, TablaActual[1].ToString());
                            }
                        }
                        tuplas = MD.Operacion_Seleccion(BDActual, txtTabla.Text, txtPredicado.Text, columnas);
                        if (tuplas == null)
                        {
                            MessageBox.Show("Error al realizar la operación", "Error");//Mensaje de error
                        }
                        else
                        {
                            algebraLineal    = "σ " + txtPredicado.Text.Trim() + "(" + txtTabla.Text.Trim() + ")";
                            SQL              = "SELECT * FROM " + txtTabla.Text + " WHERE " + txtPredicado.Text;
                            mostrarResultado = true;
                        }
                    }
                    else
                    {
                        MessageBox.Show("ERROR: NO EXISTE LA TABLA " + txtTabla.Text, "Error");//Mensaje de error
                    }
                }
                else
                {
                    MessageBox.Show("Debe ingresar una tabla y/o predicado", "Error");//Mensaje de error
                }
            }
            //------------- Proyeccion -------------
            else if (cmbOperacion.SelectedIndex == 1)
            {
                if (txtTabla.Text.Trim() != "" && txtPredicado.Text.Trim() != "")
                {
                    if (MD.verificar_Tabla(BDActual, txtTabla.Text) == "existe")
                    {
                        foreach (String atributo in txtPredicado.Text.Split(',').ToList())
                        {
                            columnas.Add(atributo.Trim());
                        }

                        tuplas = MD.Operacion_proyeccion(BDActual, txtPredicado.Text, txtTabla.Text, columnas);
                        if (tuplas == null)
                        {
                            MessageBox.Show("Error al realizar la operación", "Error");//Mensaje de error
                        }
                        else
                        {
                            algebraLineal    = "π " + txtPredicado.Text.Trim() + "(" + txtTabla.Text.Trim() + ")";
                            SQL              = "SELECT " + txtPredicado.Text + " FROM " + txtTabla.Text;
                            mostrarResultado = true;
                        }
                    }
                    else
                    {
                        MessageBox.Show("ERROR: NO EXISTE LA TABLA " + txtTabla.Text, "Error");//Mensaje de error
                    }
                }
                else
                {
                    MessageBox.Show("Debe ingresar una tabla y/o los atributos", "Error");//Mensaje de error
                }
            }
            //------------- Union -------------
            else if (cmbOperacion.SelectedIndex == 2)
            {
                //TODO
            }
            //------------- Diferencia -------------
            else if (cmbOperacion.SelectedIndex == 3)
            {
                //TODO
            }
            //------------- Producto Cartesiano ------------- TODO falta resolver las columnas repetidas para crear view y recuperar columnas, y de esta forma poder motrarlas
            else if (cmbOperacion.SelectedIndex == 4)
            {
                if (txtTabla.Text.Trim() != "" && txtTabla2.Text.Trim() != "")
                {
                    if (MD.verificar_Tabla(BDActual, txtTabla.Text) == "existe")
                    {
                        if (MD.verificar_Tabla(BDActual, txtTabla2.Text) == "existe")
                        {
                            columnas = MD.Columnas_cartesiano(BDActual, txtTabla.Text, txtTabla2.Text);

                            if (columnas != null)
                            {
                                tuplas = MD.Operacion_producto_cartesiano(BDActual, txtTabla.Text, txtTabla2.Text, columnas);
                                if (tuplas == null)
                                {
                                    MessageBox.Show("Error al realizar la operación", "Error");//Mensaje de error
                                }
                                else
                                {
                                    algebraLineal    = txtTabla.Text.Trim() + " X " + txtTabla2.Text.Trim();
                                    SQL              = "SELECT * FROM " + txtTabla.Text + "," + txtTabla2.Text;
                                    mostrarResultado = true;
                                }
                            }
                            else
                            {
                                MessageBox.Show("Error al recuperar columnas de la operación", "Error");//Mensaje de error
                            }
                        }
                        else
                        {
                            MessageBox.Show("ERROR: NO EXISTE LA TABLA " + txtTabla2.Text, "Error");//Mensaje de error
                        }
                    }
                    else
                    {
                        MessageBox.Show("ERROR: NO EXISTE LA TABLA " + txtTabla.Text, "Error");//Mensaje de error
                    }
                }
                else
                {
                    MessageBox.Show("Debe ingresar las 2 tablas", "Error");//Mensaje de error
                }
            }
            //------------- Interseccion -------------
            else if (cmbOperacion.SelectedIndex == 5)
            {
                //TODO
            }
            //------------- Division -------------
            else if (cmbOperacion.SelectedIndex == 6)
            {
                //TODO
            }
            //------------- Renombrar -------------
            else if (cmbOperacion.SelectedIndex == 7)
            {
                //TODO
            }
            //------------- Join -------------
            else if (cmbOperacion.SelectedIndex == 8)
            {
                if (txtTabla.Text.Trim() != "" && txtTabla2.Text.Trim() != "" && txtPredicado.Text.Trim() != "")
                {
                    if (MD.verificar_Tabla(BDActual, txtTabla.Text) == "existe")
                    {
                        if (MD.verificar_Tabla(BDActual, txtTabla2.Text) == "existe")
                        {
                            columnas = MD.Columnas_join(BDActual, txtTabla.Text, txtTabla2.Text, txtPredicado.Text);

                            if (columnas != null)
                            {
                                tuplas = MD.Operacion_join(BDActual, txtTabla.Text, txtTabla2.Text, txtPredicado.Text, columnas);
                                if (tuplas == null)
                                {
                                    MessageBox.Show("Error al realizar la operación", "Error");//Mensaje de error
                                }
                                else
                                {
                                    algebraLineal    = txtTabla.Text.Trim() + " ⋈ " + txtPredicado.Text + " " + txtTabla2.Text.Trim();
                                    SQL              = "SELECT * FROM " + txtTabla.Text + " JOIN " + txtTabla2.Text + " ON " + txtPredicado.Text;
                                    mostrarResultado = true;
                                }
                            }
                            else
                            {
                                MessageBox.Show("Error al recuperar columnas de la operación", "Error");//Mensaje de error
                            }
                        }
                        else
                        {
                            MessageBox.Show("ERROR: NO EXISTE LA TABLA " + txtTabla2.Text, "Error");//Mensaje de error
                        }
                    }
                    else
                    {
                        MessageBox.Show("ERROR: NO EXISTE LA TABLA " + txtTabla.Text, "Error");//Mensaje de error
                    }
                }
                else
                {
                    MessageBox.Show("Debe ingresar las 2 tablas y el predicado", "Error");//Mensaje de error
                }
            }
            //------------- Natural join -------------
            else if (cmbOperacion.SelectedIndex == 9)
            {
                //TODO
            }
            //------------- Agregacion -------------
            else if (cmbOperacion.SelectedIndex == 10)
            {
                if (txtTabla.Text.Trim() != "" && txtPredicado.Text.Trim() != "")
                {
                    if (MD.verificar_Tabla(BDActual, txtTabla.Text) == "existe")
                    {
                        columnas = MD.Columnas_agregacion(BDActual, txtTabla.Text, txtPredicado.Text);

                        if (columnas != null)
                        {
                            tuplas = MD.Operacion_agregacion(BDActual, txtTabla.Text, txtPredicado.Text, columnas);
                            if (tuplas == null)
                            {
                                MessageBox.Show("Error al realizar la operación", "Error");//Mensaje de error
                            }
                            else
                            {
                                algebraLineal    = "Ģ " + txtPredicado.Text.Trim() + "(" + txtTabla.Text.Trim() + ")";
                                SQL              = "SELECT " + txtPredicado.Text.Trim() + " FROM " + txtTabla.Text;
                                mostrarResultado = true;
                            }
                        }
                        else
                        {
                            MessageBox.Show("Error al recuperar columnas de la operación", "Error");//Mensaje de error
                        }
                    }
                    else
                    {
                        MessageBox.Show("ERROR: NO EXISTE LA TABLA " + txtTabla.Text, "Error");//Mensaje de error
                    }
                }
                else
                {
                    MessageBox.Show("Debe ingresar la tabla y las funciones de agregación", "Error");//Mensaje de error
                }
            }
            //------------- Agrupacion -------------
            else if (cmbOperacion.SelectedIndex == 11)
            {
                if (txtTabla.Text.Trim() != "" && txtAgrupaciones.Text.Trim() != "")
                {
                    if (MD.verificar_Tabla(BDActual, txtTabla.Text) == "existe")
                    {
                        String agregaciones = "";
                        if (txtPredicado.Text.Trim() != "")
                        {
                            agregaciones = ", " + txtPredicado.Text;
                        }
                        else
                        {
                            agregaciones = " ";
                        }
                        columnas = MD.Columnas_agrupacion(BDActual, txtTabla.Text, txtAgrupaciones.Text, agregaciones);

                        if (columnas != null)
                        {
                            tuplas = MD.Operacion_agrupacion(BDActual, txtTabla.Text, txtAgrupaciones.Text, agregaciones, columnas);
                            if (tuplas == null)
                            {
                                MessageBox.Show("Error al realizar la operación", "Error");    //Mensaje de error
                            }
                            else
                            {
                                algebraLineal    = txtAgrupaciones.Text.Trim() + " Ģ " + txtPredicado.Text.Trim() + "(" + txtTabla.Text.Trim() + ")";
                                SQL              = "SELECT " + txtAgrupaciones.Text.Trim() + agregaciones + " FROM " + txtTabla.Text + " GROUP BY " + txtAgrupaciones.Text.Trim();
                                mostrarResultado = true;
                            }
                        }
                        else
                        {
                            MessageBox.Show("Error al recuperar columnas de la operación", "Error");    //Mensaje de error
                        }
                    }
                    else
                    {
                        MessageBox.Show("ERROR: NO EXISTE LA TABLA " + txtTabla.Text, "Error");//Mensaje de error
                    }
                }
                else
                {
                    MessageBox.Show("Debe ingresar la tabla y las agrupaciones", "Error");//Mensaje de error
                }
            }

            if (mostrarResultado)
            {
                //Muestra la ventana con la tabla resultante de la operacion
                Form TablaResultado = new frmTablaResultado(BDActual, columnas, tuplas, algebraLineal, SQL);
                TablaResultado.Show();
            }
        }
Exemplo n.º 2
0
        private void cmbTablas_SelectedIndexChanged(object sender, EventArgs e)
        {
            DataTable Table = new DataTable();
            DataRow   Reglon;
            ArrayList columnas = new ArrayList();

            String tabla = cmbTablas.SelectedItem.ToString();

            //selecciona el esquema de la tabla
            int indice = 0;

            foreach (ArrayList NombresTablas in nombreTablas)
            {
                if (cmbTablas.SelectedIndex == indice)
                {
                    ArrayList TablaActual = NombresTablas;
                    columnas = MD.select_NombreColumnas(BDActual, tabla, TablaActual[1].ToString());
                }
                indice++;
            }

            ArrayList tuplas = new ArrayList();

            if (mostrarTablas == "Todas")
            {
                tuplas = MD.Seleccionar_tabla(BDActual, tabla, columnas);

                foreach (String columna in columnas)
                {
                    Table.Columns.Add(new DataColumn(columna));
                }

                int numeroColumna = 0;
                foreach (ArrayList atributos in tuplas)
                {
                    Reglon        = Table.NewRow();
                    numeroColumna = 0;
                    foreach (String item in atributos)
                    {
                        Reglon[numeroColumna] = item.ToString();
                        numeroColumna++;
                    }

                    Table.Rows.Add(Reglon);
                }
            }
            else
            {
                tuplas = MD.Datos_tabla(BDActual, tabla);

                Table.Columns.Add(new DataColumn("Atributo"));
                Table.Columns.Add(new DataColumn("Tipo de dato"));
                Table.Columns.Add(new DataColumn("Máxima longitud"));
                Table.Columns.Add(new DataColumn("Precisión numérica"));
                Table.Columns.Add(new DataColumn("Escala numérica"));
                Table.Columns.Add(new DataColumn("Llave Primaria"));
                Table.Columns.Add(new DataColumn("Llave Foranea"));
                Table.Columns.Add(new DataColumn("Dominio"));

                int numeroColumna = 0;
                foreach (ArrayList atributos in tuplas)
                {
                    Reglon        = Table.NewRow();
                    numeroColumna = 0;
                    foreach (String item in atributos)
                    {
                        Reglon[numeroColumna] = item.ToString();
                        numeroColumna++;
                    }

                    Table.Rows.Add(Reglon);
                }
            }



            dgvResultado.DataSource = Table;
        }