コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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");
            }
        }
コード例 #4
0
        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");
            }
        }