예제 #1
0
 /// <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();
 }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
 /// <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();
     }
 }
예제 #5
0
        /// <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);
        }
예제 #6
0
        /// <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);
        }
예제 #7
0
        /// <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."); }
        }
예제 #8
0
        /// <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 = "";
            }
        }
예제 #9
0
        /// <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);
        }