private void ComboForanes_ItemCheck(object sender, System.Windows.Forms.ItemCheckEventArgs e)
        {
            if (e.Index == -1)
            {
                return;
            }

            if (e.NewValue == System.Windows.Forms.CheckState.Checked)
            {
                Objetos.CLLaveForanea fk;
                fk = this.Foraneas[e.Index];
                FormAccion dlg = new FormAccion(Modo);
                dlg.Eliminar    = fk.Eliminar;
                dlg.Comentarios = fk.Comentarios;
                System.Collections.Generic.List <Objetos.CCampoFK> lista = DB.DameCamposFK(fk.id);
                Objetos.CCampoFK cfk = lista[0];
                if (this.Modo == 1)
                {
                    dlg.Tabla = cfk.hija;
                }
                else
                {
                    dlg.Tabla = cfk.maestra;
                }
                dlg.Mensaje = fk.Mensage;
                if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.Cancel)
                {
                    e.NewValue = System.Windows.Forms.CheckState.Unchecked;
                    return;
                }
                fk.Eliminar    = dlg.Eliminar;
                fk.Mensage     = dlg.Mensaje;
                fk.Comentarios = dlg.Comentarios;
            }
        }
Exemple #2
0
        private void muestraCampos(List <Objetos.CCampoFK> lista)
        {
            DataSet   ds = new DataSet();
            DataTable dt = new DataTable("Tabla");
            //Creando las columnas y agregando los items a la tabla
            DataColumn dccolumnaMaestra = new DataColumn("columnaMaestra");
            DataColumn dccolumnahija    = new DataColumn("columnahija");

            //Asignando los campos ala tabla
            dt.Columns.Add(dccolumnaMaestra);
            dt.Columns.Add(dccolumnahija);
            //agregarndo la tabla al data set
            ds.Tables.Add(dt);
            //llenando la tabla con datos
            int i, n;

            n = lista.Count;
            for (i = 0; i < n; i++)
            {
                Objetos.CCampoFK dato  = (Objetos.CCampoFK)lista[i];
                DataRow          drRow = dt.NewRow();
                drRow["columnaMaestra"] = dato.columnaMaestra;
                drRow["columnahija"]    = dato.columnahija;
                dt.Rows.Add(drRow);
            }
            dataGrid1.DataSource = ds.Tables[0];
            DataGridTableStyle ts = new DataGridTableStyle();

            ts.AllowSorting = false;
            ts.MappingName  = "Tabla";
            //creando las columnas que se van a ver
            //------------------Columna padre----------------------------------------
            DataGridColumnStyle columnaMaestra = new DataGridTextBoxColumn();

            columnaMaestra.MappingName = "columnaMaestra";
            columnaMaestra.HeaderText  = "Columna padre";
            columnaMaestra.Width       = 100;
            columnaMaestra.ReadOnly    = true;
            ts.GridColumnStyles.Add(columnaMaestra);
            //------------------Columna hija----------------------------------------
            DataGridColumnStyle columnahija = new DataGridTextBoxColumn();

            columnahija.MappingName = "columnahija";
            columnahija.HeaderText  = "Columna hija";
            columnahija.Width       = 100;
            columnahija.ReadOnly    = true;
            ts.GridColumnStyles.Add(columnahija);
            //finalizando la creacion del data grid
            ts.MappingName = "Tabla";
            dataGrid1.TableStyles.Clear();
            dataGrid1.TableStyles.Add(ts);
            dataGrid1.AllowSorting = false;
        }
        private void Actualizar()
        {
            System.Collections.Generic.List <Objetos.CParametro> campos;
            campos = DB.DameCamposTabla(this.NombreTabla);
            System.Collections.Generic.List <Objetos.CParametro> llaves = DB.DameLLavesPrimarias(this.NombreTabla);
            int i, n;

            //genero la lista de parametros
            System.Collections.Generic.List <Objetos.CParametro> camposParametro = new List <Visor_sql_2005.Objetos.CParametro>();
            //lo primero que agrego, son los campos llave que requiero
            foreach (Objetos.CParametro p in llaves)
            {
                camposParametro.Add(p);
            }
            //ahora agrego los demas campos que me dio el usuario
            foreach (Objetos.CParametro p2 in Parametros)
            {
                //checo si esta en la lista de parametros
                bool esta = false;
                foreach (Objetos.CParametro p3 in camposParametro)
                {
                    if (p3.nombre == p2.nombre)
                    {
                        esta = true;
                        break;
                    }
                }
                if (esta == false)
                {
                    camposParametro.Add(p2);
                }
            }

            string s = "create procedure " + Nombre + "(";

            n = camposParametro.Count;
            //agrego los campos de la tabla (todos)
            for (i = 0; i < n; i++)
            {
                if (i > 0)
                {
                    s = s + ",";
                }
                Objetos.CParametro Parametro = camposParametro[i];
                s = s + "@" + Parametro.nombre + " " + Parametro.TipoSP;
            }
            s = s + ") as\r\n";
            s = s + "begin\r\n";
            s = s + "\t--procedimiento almacenado que modifica un registro a la tabla " + NombreTabla + " \r\n";
            if (ComboForanes.CheckedItems.Count > 0)
            {
                //hay llaves foraneas, por lo que checo si hay que comprobar la integridad
                System.Collections.Generic.List <Objetos.CLLaveForanea> Fks = new System.Collections.Generic.List <Objetos.CLLaveForanea>();
                n = ComboForanes.CheckedIndices.Count;
                for (i = 0; i < n; i++)
                {
                    //creo la lista de llaves foraneas que hay que checar
                    Fks.Add(Foraneas[ComboForanes.CheckedIndices[i]]);
                }
                n = Fks.Count;
                for (i = 0; i < n; i++)
                {
                    Objetos.CLLaveForanea fk = Fks[i];
                    System.Collections.Generic.List <Objetos.CCampoFK> lista = DB.DameCamposFK(fk.id);
                    int j, k;
                    k = lista.Count;
                    Objetos.CCampoFK cfk = null;
                    if (fk.Comentarios.Trim() != "")
                    {
                        s = s + "\t--" + fk.Comentarios + "\r\n";
                    }
                    for (j = 0; j < k; j++)
                    {
                        cfk = lista[j];
                        if (j == 0)
                        {
                            s = s + "\tif not exists( select * from " + cfk.maestra + " where " + cfk.columnaMaestra + "=@" + cfk.columnahija;
                        }
                        else
                        {
                            s = s + " and " + cfk.columnaMaestra + "=@" + cfk.columnahija;
                        };
                    }
                    s = s + ")\r\n";
                    s = s + "\tbegin\r\n";
                    s = s + "\t\t--no se ncontro el campo de la llave foranea \r\n";
                    s = s + "\t\t--por lo que genero una ecepcion \r\n";
                    s = s + "\t\tRAISERROR ('" + fk.Mensage + "', 16, 1) \r\n";
                    s = s + "\t\treturn \r\n";
                    s = s + "\tend\r\n";
                }
            }
            s = s + "\t --agregar el codigo adicional aqui\r\n";
            s = s + "\tupdate  " + NombreTabla + " set ";
            n = Parametros.Count;
            for (i = 0; i < n; i++)
            {
                if (i > 0)
                {
                    s = s + ",";
                }
                Objetos.CParametro Parametro = Parametros[i];
                s = s + Parametro.nombre + "=@" + Parametro.nombre;
            }
            s = s + " where ";
            n = LLaves.Count;
            for (i = 0; i < n; i++)
            {
                if (i > 0)
                {
                    s = s + " and ";
                }
                Objetos.CParametro llave = this.LLaves[i];
                s = s + llave.nombre + "=@" + llave.nombre;
            }
            s = s + "\r\nend\r\n";
            if (OnCodigo != null)
            {
                OnCodigo(textBox1.Text, s);
            }
        }
        private void Eliminar()
        {
            string s = "create procedure " + this.Nombre + "(";

            //obtengo los parametros
            System.Collections.Generic.List <Objetos.CParametro> llaves = DB.DameLLavesPrimarias(this.NombreTabla);
            int i, n = llaves.Count;

            for (i = 0; i < n; i++)
            {
                Objetos.CParametro pa = llaves[i];
                if (i > 0)
                {
                    s = s + ",";
                }
                s = s + "@" + pa.nombre + " " + pa.TipoSP;
            }
            s = s + ") as\r\n";
            s = s + "begin\r\n";
            s = s + "\t--procedimiento almacenado que borra un registro de la tabla " + this.NombreTabla + " \r\n";
            //------------------------------------------------------------------------
            if (ComboForanes.CheckedItems.Count > 0)
            {
                //hay llaves foraneas, por lo que checo si hay que comprobar la integridad
                System.Collections.Generic.List <Objetos.CLLaveForanea> Fks = new System.Collections.Generic.List <Objetos.CLLaveForanea>();
                n = ComboForanes.CheckedIndices.Count;
                for (i = 0; i < n; i++)
                {
                    //creo la lista de llaves foraneas que hay que checar
                    Fks.Add(Foraneas[ComboForanes.CheckedIndices[i]]);
                }
                n = Fks.Count;
                for (i = 0; i < n; i++)
                {
                    Objetos.CLLaveForanea fk = Fks[i];
                    System.Collections.Generic.List <Objetos.CCampoFK> lista = DB.DameCamposFK(fk.id);
                    int j, k;
                    k = lista.Count;
                    Objetos.CCampoFK cfk = null;
                    if (fk.Eliminar == false)
                    {
                        for (j = 0; j < k; j++)
                        {
                            cfk = lista[j];
                            if (j == 0)
                            {
                                if (fk.Comentarios.Trim() == "")
                                {
                                    s = s + "\t--Verifico la existencia de registros en la tabla " + cfk.hija + "\r\n";
                                }
                                else
                                {
                                    s = s + "\t--" + fk.Comentarios + "\r\n";
                                }
                                s = s + "\tif exists( select * from " + cfk.hija + " where " + cfk.columnaMaestra + "=@" + cfk.columnahija;
                            }
                            else
                            {
                                s = s + " and " + cfk.columnaMaestra + "=@" + cfk.columnahija;
                            };
                        }
                        s = s + ")\r\n";
                        s = s + "\tbegin\r\n";
                        s = s + "\t\t--Genero un error \r\n";
                        s = s + "\t\tRAISERROR (\'" + fk.Mensage + "\', 16, 1) \r\n";
                        s = s + "\t\treturn \r\n";
                        s = s + "\tend\r\n";
                    }
                    else
                    {
                        // hay que eliniar la tabla hija
                        for (j = 0; j < k; j++)
                        {
                            cfk = lista[j];
                            if (j == 0)
                            {
                                if (fk.Comentarios.Trim() == "")
                                {
                                    s = s + "\t--Elimino la tabla " + cfk.hija + "\r\n";
                                }
                                else
                                {
                                    s = s + "\t--" + fk.Comentarios + "\r\n";
                                }

                                s = s + "\tdelete  " + cfk.hija + " where " + cfk.columnaMaestra + "=@" + cfk.columnahija;
                            }
                            else
                            {
                                s = s + " and " + cfk.columnaMaestra + "=@" + cfk.columnahija;
                            }
                        }
                        s = s + "\r\n";
                    }
                }
            }
            //--------------------------------------------------------------------------------
            s = s + "\t-- agregar el codigo para las comprobaciones adicionales aqui\r\n";
            s = s + "\t-- Elimino la tbala " + NombreTabla + " \r\n";
            s = s + "\tdelete " + NombreTabla + " where ";
            n = llaves.Count;
            for (i = 0; i < n; i++)
            {
                Objetos.CParametro pa = llaves[i];
                if (i > 0)
                {
                    s = s + " and ";
                }
                s = s + pa.nombre + "=@" + pa.nombre;
            }
            s = s + "\r\nend\r\n";
            if (OnCodigo != null)
            {
                OnCodigo(textBox1.Text, s);
            }
        }
        private void Crear()
        {
            Objetos.CParametro llave = null;
            System.Collections.Generic.List <Objetos.CParametro> campos;
            campos = DB.DameCamposTabla(this.NombreTabla);
            int    i, n;
            string s = "create procedure " + Nombre + "(";

            n = this.Parametros.Count;
            //agrego los campos de la tabla (todos)
            for (i = 0; i < n; i++)
            {
                if (i > 0)
                {
                    s = s + ",";
                }
                Objetos.CParametro Parametro = Parametros[i];
                s = s + "@" + Parametro.nombre + " " + Parametro.TipoSP;
            }
            s = s + ") as\r\n";
            s = s + "begin\r\n";
            s = s + "\t--procedimiento almacenado que agrega un registro a la tabla " + NombreTabla + " \r\n";
            if (CHAuto.Checked == true)
            {
                llave = this.LLaves[0];
                //hay que obtener la llave de forma automatica
                //esto solo aplica cuado el campo es numerico
                s = s + "\tdeclare @" + llave.nombre + " " + llave.TipoSP + " --variable para obtener la llave automaticamente\r\n";
                s = s + "\tif exists( select * from " + this.NombreTabla.Trim() + ")\r\n";
                s = s + "\tbegin\r\n";
                s = s + "\t\t select @" + llave.nombre + "=max(" + llave.nombre + ")+1 from " + this.NombreTabla + " --obtengo un consecutivo\r\n";
                s = s + "\tend\r\n";
                s = s + "\telse\r\n";
                s = s + "\tbegin\r\n";
                s = s + "\t\t select @" + llave.nombre + "=0 --es el primer registro, por lo que empieza en cero\r\n";
                s = s + "\tend\r\n";
            }
            if (ComboForanes.CheckedItems.Count > 0)
            {
                //hay llaves foraneas, por lo que checo si hay que comprobar la integridad
                System.Collections.Generic.List <Objetos.CLLaveForanea> Fks = new System.Collections.Generic.List <Objetos.CLLaveForanea>();
                n = ComboForanes.CheckedIndices.Count;
                for (i = 0; i < n; i++)
                {
                    //creo la lista de llaves foraneas que hay que checar
                    Fks.Add(Foraneas[ComboForanes.CheckedIndices[i]]);
                }
                n = Fks.Count;
                for (i = 0; i < n; i++)
                {
                    Objetos.CLLaveForanea fk = Fks[i];
                    System.Collections.Generic.List <Objetos.CCampoFK> lista = DB.DameCamposFK(fk.id);
                    int j, k;
                    k = lista.Count;
                    Objetos.CCampoFK cfk = null;
                    if (fk.Comentarios.Trim() != "")
                    {
                        s = s + "\t--" + fk.Comentarios + "\r\n";
                    }

                    for (j = 0; j < k; j++)
                    {
                        cfk = lista[j];
                        if (j == 0)
                        {
                            s = s + "\tif not exists( select * from " + cfk.maestra + " where " + cfk.columnaMaestra + "=@" + cfk.columnahija;
                        }
                        else
                        {
                            s = s + " and " + cfk.columnaMaestra + "=@" + cfk.columnahija;
                        };
                    }
                    s = s + ")\r\n";
                    s = s + "\tbegin\r\n";
                    s = s + "\t\t--no se ncontro el campo de la llave foranea \r\n";
                    s = s + "\t\t--por lo que genero una ecepcion \r\n";
                    s = s + "\t\tRAISERROR ('" + fk.Mensage + "', 16, 1) \r\n";
                    s = s + "\t\treturn \r\n";
                    s = s + "\tend\r\n";
                }
            }
            s = s + "\t --agregar el codigo adicional aqui\r\n";
            s = s + "\tinsert into " + NombreTabla + "(";
            n = Parametros.Count;
            if (CHAuto.Checked == true)
            {
                s = s + llave.nombre;
                if (n > 0)
                {
                    s = s + ",";
                }
            }
            for (i = 0; i < n; i++)
            {
                if (i > 0)
                {
                    s = s + ",";
                }
                Objetos.CParametro Parametro = Parametros[i];
                s = s + Parametro.nombre;
            }
            s = s + ")\r\n";
            s = s + "\tvalues(";
            if (CHAuto.Checked == true)
            {
                s = s + "@" + llave.nombre;
                if (n > 0)
                {
                    s = s + ",";
                }
            }
            for (i = 0; i < n; i++)
            {
                if (i > 0)
                {
                    s = s + ",";
                }
                Objetos.CParametro Parametro = Parametros[i];
                s = s + "@" + Parametro.nombre;
            }
            s = s + ")\r\n";
            s = s + "end\r\n";
            if (OnCodigo != null)
            {
                OnCodigo(textBox1.Text, s);
            }
        }