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