private void AgregaTabla_Click(object sender, EventArgs e) { //Se Valida que el textbox no este vacio if (string.IsNullOrEmpty(txtBAgrega.Text)) { return; } Dic.LNombresTablas.Add(txtBAgrega.Text); Dic.ActualizaDiccionario(); Tabla auxTabla = new Tabla(txtBAgrega.Text, Dic.Ruta); auxTabla.GuardaTabla(); lTablas.Add(auxTabla); cmbTablas.Items.Add(txtBAgrega.Text); txtBAgrega.Clear(); }
private void cmbTablas_SelectedIndexChanged(object sender, EventArgs e) { sNomTabla = cmbTablas.Text; //Cuando el valor del combobox que contiene las entidades cambia, se habilitan los controles que permiten agregar los atributos de la entidad seleccionada. ((Control)TabPageAtributos).Enabled = true; btnModificaTabla.Enabled = true; /////////////////////////////////////////////////////////////// int ntab = lTablas.Count; for (int i = 0; i < ntab; i++) { if (lTablas[i].Nombre == sNomTabla) { auxTab = lTablas[i]; } } actualizalistaPKTablas(); actualizaDataGridAtributos(); GeneraColumnas(); actualizaDataGridRegistros(); }
private void btEjecutar_Click(object sender, EventArgs e) { if (auxtablas != null) { List <string> splitConsulta = (richTextBox1.Text).Split().ToList(); if (splitConsulta.Count < 4) { MessageBox.Show("No es posible interpretar el texto de entrada"); } else { if (splitConsulta.Contains("SELECT") && splitConsulta.Contains("FROM")) { int SELECTIndex = splitConsulta.IndexOf("SELECT"); int FROMIndex = splitConsulta.IndexOf("FROM"); /***********Falta validar que la tabla exista**********/ /** * Verifica que la palabra FROM Verifica que exista almenos una palabra * no sea la ultima de la lista entre el SELECT y el FROM */ if (FROMIndex < (splitConsulta.Count - 1) && SELECTIndex < (FROMIndex - 1)) { /** * Verifica que la palabra que existe Verifica el numero de palabras * despues de FROM sea un * en el split sea cuatro para ejecutar * la consulta a todas las tablas */ if (splitConsulta[SELECTIndex + 1] == "*" && splitConsulta.Count == inumeroMinimo) { /** * Obtiene el nombre de la tabla que se ha de consultar * la cual se encuentra almacenada en la ultima posición * del Split */ auxt = auxtablas.FirstOrDefault(p => p.Nombre == splitConsulta[inumeroMinimo - 1]); if (auxt != null) { GeneraColumnas(); actualizaDataGridRegistros(); auxt = null; } else { MessageBox.Show("La Tabla que desea consultar no existe"); } } else/**Si no se cumple la condición de arriba hay que verificar cuales son las plabaras que existen entre SELECT y FROM*/ { if (splitConsulta.Contains("WHERE")) { int WHEREIndex = splitConsulta.IndexOf("WHERE"); if (splitConsulta.Count > WHEREIndex + 1) { string atributoConsulta = splitConsulta[WHEREIndex + 1]; /** La variable "tab" contiene el nombre de la tabla a consultar */ string tab = splitConsulta[FROMIndex + 1]; auxt = auxtablas.FirstOrDefault(p => p.Nombre == tab); //Verificar que el atributo exista if (auxt != null) { if (existeAtributo(atributoConsulta)) { string signo = null; signo = splitConsulta.FirstOrDefault(p => p == "="); if (signo != null) { int SIGNOIndex = splitConsulta.IndexOf(signo); if (SIGNOIndex > WHEREIndex) { if (splitConsulta.Count - 1 > SIGNOIndex) { //Dato Condicional string sDato = splitConsulta[splitConsulta.Count - 1]; ///////////////////////////////////// List <string> lCampos; /** * Obtiene la lista de atributos que se han de consultar * Esto lo hace verificando que los valores que esta obteniendo * son diferentes de las palabras reservadas "SELECT", "FROM" * y el nombre de la tabla. **/ lCampos = splitConsulta.Where(p => p != "SELECT" && p != "FROM" && p != tab && p != "WHERE" && p != "=" && p != sDato).ToList(); if (lCampos.Contains(atributoConsulta)) { int pos = lCampos.IndexOf(atributoConsulta); lCampos.RemoveAt(pos); } /** * Se verifica si todos los elementos dentro de la lista de campos (lCampos) realmente son * atributos de "tab" la tabla que se ha de consultar. */ bool existenCampos = false; foreach (string value in lCampos) { existenCampos = existeAtributo(value); if (!existenCampos) { break; } } if (existenCampos) { GeneraColumnas(lCampos); actualizaDataGridRegistros(lCampos, sDato, atributoConsulta); auxt = null; } else { MessageBox.Show("Alguno o algunos de los campos que desea Consultar no existen, verifique que esten correctamente escritos"); } /////////////////////////////////////// } else { MessageBox.Show("No es posible interpretar el texto de entrada"); } } else { MessageBox.Show("No es posible interpretar el texto de entrada"); } } else { MessageBox.Show("No es posible interpretar el texto de entrada"); } } else { MessageBox.Show("El atributo " + atributoConsulta + " no existe, verifique que este bien escrito"); } } else { MessageBox.Show("La Tabla que desea consultar no existe"); } } } else { List <string> lCampos; /** La variable "tab" contiene el nombre de la tabla a consultar */ string tab = splitConsulta[splitConsulta.Count - 1]; /** * Obtiene la lista de atributos que se han de consultar * Esto lo hace verificando que los valores que esta obteniendo * son diferentes de las palabras reservadas "SELECT", "FROM" * y el nombre de la tabla. **/ lCampos = splitConsulta.Where(p => p != "SELECT" && p != "FROM" && p != tab).ToList(); /** * Se verifica si todos los elementos dentro de la lista de campos (lCampos) realmente son * atributos de "tab" la tabla que se ha de consultar. */ auxt = auxtablas.FirstOrDefault(p => p.Nombre == tab); if (auxt != null) { bool existenCampos = false; foreach (string value in lCampos) { existenCampos = existeAtributo(value); if (!existenCampos) { break; } } if (existenCampos) { GeneraColumnas(lCampos); actualizaDataGridRegistros(lCampos); auxt = null; } else { MessageBox.Show("Alguno o algunos de los campos que desea Consultar no existen, verifique que esten correctamente escritos"); } } else { MessageBox.Show("La Tabla que desea consultar no existe"); } } } } else { MessageBox.Show("No es posible interpretar el texto de entrada"); } } } } else { MessageBox.Show("No existe una base de datos la cual consultar"); } }
private void abrirBaseDeDatosToolStripMenuItem_Click(object sender, EventArgs e) { try { using (System.Windows.Forms.FolderBrowserDialog dialogo = new System.Windows.Forms.FolderBrowserDialog()) { dialogo.Description = "Abrir"; if (dialogo.ShowDialog() == System.Windows.Forms.DialogResult.OK) { DirectoryInfo di = new DirectoryInfo(dialogo.SelectedPath); if (di.GetFiles("*.dd").Count() != 0) { string snom = di.GetFiles("*.dd")[0].FullName; ((Control)TabPageAtributos).Enabled = true; AgregaTabla.Enabled = true; txtBAgrega.Enabled = true; cmbTablas.Enabled = true; eliminarBaseDeDatosActualToolStripMenuItem.Enabled = true; modificarBaseDeDatosToolStripMenuItem.Enabled = true; cmbTablas.Items.Clear(); lTablas = new List <Tabla>(); using (Stream st = File.Open(snom, FileMode.Open)) { var binfor = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); Dic = new Diccionario(); Dic = (Diccionario)binfor.Deserialize(st); labNombreBD.Text = Dic.NombreBD; Tabla auxTabla; for (int i = 0; i < Dic.LNombresTablas.Count; i++) { cmbTablas.Items.Add(Dic.LNombresTablas[i]); string PathTabla = Dic.Ruta + "\\" + Dic.LNombresTablas[i] + ".tab"; using (Stream str = File.Open(PathTabla, FileMode.Open)) { auxTabla = new Tabla(); var binforTab = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); auxTabla = (Tabla)binforTab.Deserialize(str); lTablas.Add(auxTabla); } } } } else { MessageBox.Show("No existe la Base de Datos"); } } else { MessageBox.Show("Se Cancelo La Operación"); } } } catch (Exception ex) { MessageBox.Show("Error"); } }