private void btnGuardarTabla_Click_1(object sender, EventArgs e)
        {
            Boolean existeTemp = false;

            foreach (String tabla in VGlobal.tablasTemporales)
            {
                if (txtNombreTabla.Text == tabla)
                {
                    DialogResult result = MessageBox.Show("La tabla temporal " + txtNombreTabla.Text + " ya existe ¿desea sobreescribirla?", "Aviso", MessageBoxButtons.YesNo);

                    if (result == DialogResult.Yes)
                    {
                        String error = MD.Crear_tabla_temp(BDActual, txtNombreTabla.Text, SQLGuardarTabla);
                        if (error == null)
                        {
                            MessageBox.Show("No se pudo guardar la tabla " + txtNombreTabla.Text, "Error");
                        }
                        else
                        {
                            MessageBox.Show("Tabla " + txtNombreTabla.Text + " guardada exitosamente", "Aviso");
                        }
                    }
                    existeTemp = true;
                    break;
                }
            }

            if (!existeTemp)
            {
                if (MD.verificar_Tabla(BDActual, txtNombreTabla.Text) == "existe")
                {
                    MessageBox.Show("ERROR: NO SE PUEDE DEJAR EL RESULTADO EN UNA TABLA PERMANENTE DE LA BASE DE DATOS.", "Error");
                }
                else
                {
                    String error = MD.Crear_tabla_temp(BDActual, txtNombreTabla.Text, SQLGuardarTabla);
                    if (error == null)
                    {
                        MessageBox.Show("No se pudo guardar la tabla " + txtNombreTabla.Text, "Error");
                    }
                    else
                    {
                        VGlobal.tablasTemporales.Add(txtNombreTabla.Text);
                        MessageBox.Show("Tabla " + txtNombreTabla.Text + " guardada exitosamente", "Aviso");
                    }
                }
            }
        }
Ejemplo n.º 2
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();
            }
        }