/// <summary> /// Constructor de la clase /// </summary> /// <param name="tabla">Tabla donde se van a ingresar los atributos</param> /// <param name="baseDatos">Base de datos en la que se esta trabajando</param> public FormAtributos(Tabla tabla, BaseDatos baseDatos) { InitializeComponent(); Archivo = new Archivo(); @base = baseDatos; Archivo.BaseD = @base; tablaActual = tabla; NombreTabla.Text += " " + tablaActual._NombreTabla; CargarAtributos(); }
/// <summary> /// Funcion que elimina el nombre del atributo en los datos /// </summary> /// <param name="tupla">Registro completo</param> /// <param name="t">tabla donde se encuentra</param> /// <returns>cadena con la informacion del registro </returns> private string elimina_nombre_atributo(string tupla, Tabla t) { foreach (string atributo in t.lista_nombre_atributos()) { tupla = tupla.Replace(atributo + ":", ""); } /* if (id != "") * tupla = tupla.Replace(id + ":", ""); */ return(tupla); }
/// <summary> /// Funcion que busca dentro de una tabla cual es el indice de su clave PK /// </summary> /// <param name="tabla">Tabla donde se buscara la clave PK</param> /// <returns>indice de donde se encuentra el indice PK</returns> private int BuscaClavePrimaria(Tabla tabla) { int PK = new int(); for (int i = 0; i < tabla._Atributos.Count; i++) { if (tabla._Atributos[i]._TipoLLave == 1) { PK = i; } } return(PK); }
/// <summary> /// Constructor del forma Registros /// </summary> /// <param name="base">Base de datos actual</param> /// <param name="tabla">Tabla actual donde se estan ingresando datos</param> public RegistrosFm(BaseDatos @base, Tabla tabla) { InitializeComponent(); Archivo = new Archivo(); @baseActual = @base; Archivo.BaseD = @baseActual; tablaRegistros = tabla; CreaTextBoxLabel(); if (tablaRegistros._datos != null) { CargarAtributos(); } }
/// <summary> /// funcion que busca el indice cuando hay clave FK /// </summary> /// <param name="tabla">Tabla donde se buscara la Clave FK</param> /// <returns>Indice del atributo donde se encuentra esa clave FK</returns> private int BuscaIndiceKF(Tabla tabla) { int PK = new int(); for (int i = 0; i < tabla._Atributos.Count; i++) { if (tabla._Atributos[i]._NombreFK == tablaRegistros._NombreTabla) { PK = i; } } return(PK); }
/// <summary> /// Funcion que regresa una tabla /// </summary> /// <returns>regresa la tabla si coincide con algun elemento existente</returns> public Tabla RegresaTabla() { Tabla tabla = new Tabla(); foreach (Tabla item in baseActual.Tablas) { if (item._NombreTabla == (string)DataGridEntidades.CurrentRow.Cells[0].Value) { tabla = item; break; } } return(tabla); }
/// <summary> /// Funcion que guarda una tabla en un archivo especifico /// </summary> /// <param name="json">Tabla que se quiere guardar</param> public void GuardarTabla(Tabla json) { JavaScriptSerializer js = new JavaScriptSerializer(); try { //SaveD.InitialDirectory string jsonData = js.Serialize(json); if (di == null) { File.WriteAllText(SaveD.InitialDirectory + "//" + BaseD._NombreBD + "//" + json._NombreTabla.ToString() + ".TB", jsonData); } else { File.WriteAllText(di.FullName + "//" + json._NombreTabla.ToString() + ".TB", jsonData); } } catch (Exception) { MessageBox.Show("No se pudo guardar el archivo."); } }
/// <summary> /// Evento para agregar una nueva tabla /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnBotonAgregar_Click(object sender, EventArgs e) { int res = ChecaEntidadRepetida(textBox1.Text); if (res == 0) { Tabla tabla = new Tabla(textBox1.Text); baseActual.Tablas.Add(tabla); actualizaDataGrid(); Archivo.GuardarTabla(tabla); Archivo.GuardaBase(baseActual); textBox1.Text = ""; } else { MessageBox.Show("La entidad deseada ya existe"); textBox1.Text = ""; } }
/// <summary> /// Funcion que obtienen todos los registros dentro de la tabla Actual /// </summary> /// <param name="t">Tabla donde se obtendran los registros</param> /// <returns>Lista de listas de cadenas con cada registro separado por atributos</returns> private List <List <string> > obten_registros(Tabla t) { List <List <string> > registros = new List <List <string> >(); // por cada tupla for (int i = 0; i < t._datos.Count; i++) { registros.Add(new List <string>()); // separamos la tupla por cada uno de sus metadatos string[] datos_split = elimina_nombre_atributo(t._datos[i], t).Split(','); // por cada metadato for (int j = 0; j < datos_split.Length; j++) { // simplemente añadimos el registro registros.Last().Add(datos_split[j]); } } return(registros); }