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