예제 #1
0
        private List <AsistSps.CDelete> AgregaDelete(AsistSps.CDelete cmd, Controladores_DB.IDataBase DB, bool modo)
        {
            List <AsistSps.CDelete> comandos = new List <Visor_sql_2015.AsistSps.CDelete>();

            AsistSps.CDelete Comando = new Visor_sql_2015.AsistSps.CDelete();
            //copio el comando para que por cada hijo le agrere sus porpios datos
            Comando.CpoiaComando(cmd);
            Comando.Delete  = Eliminar;
            Comando.Mensage = Mensage;
            //agrego mi propia tabla
            int nt;

            nt = Comando.AddFrom(Tabla);
            int ntp; //numero de tabla padre
            //me traigo los campos involucrados en mi llave foranea
            List <Objetos.CCampoFK> llaves;

            llaves = DB.DameCamposFK(name);
            //agrego la tabla padre para obtener su numero de tabla
            ntp = Comando.AddFrom(llaves[0].maestra);
            //ahora agrego los where
            foreach (Objetos.CCampoFK cfk in llaves)
            {
                string s = "T" + nt.ToString() + "." + cfk.columnahija + "=T" + ntp.ToString() + "." + cfk.columnaMaestra;
                Comando.AddWhere(s);
            }
            //ahora reviso si tengo hijos
            if (Hijas == null)
            {
                //no tengo, por lo que termino
                if (modo == Eliminar)
                {
                    comandos.Add(Comando);
                }
                return(comandos);
            }
            //tengo hijos, por lo que recorro cada uno para que agregen su codigo al comando
            foreach (CLLaveForanea hija in Hijas)
            {
                //que agrege los demas comandos
                List <AsistSps.CDelete> l;
                l = hija.AgregaDelete(Comando, DB, modo);
                //agrego todos los comandos a mi comando principal
                foreach (AsistSps.CDelete cd in l)
                {
                    comandos.Add(cd);
                }
            }
            //agrego mi comando al final de la lista
            if (modo == Eliminar)
            {
                comandos.Add(Comando);
            }
            return(comandos);
        }
예제 #2
0
        public bool raiz;                            //indica si es en nodo raiz
        public List <AsistSps.CDelete> ComandoDelete(List <Objetos.CParametro> variables, Controladores_DB.IDataBase DB, bool modo)
        {
            List <AsistSps.CDelete> comandos = new List <Visor_sql_2015.AsistSps.CDelete>();

            AsistSps.CDelete comando = new Visor_sql_2015.AsistSps.CDelete();
            comando.Delete  = Eliminar;
            comando.Mensage = Mensage;
            string tablapadre;
            //agrego la tabla al comando
            int nt;  //numero de tabla
            int ntp; //numero de tabla padre
            List <Objetos.CCampoFK> llaves;

            llaves     = DB.DameCamposFK(name);
            tablapadre = llaves[0].maestra;
            ntp        = comando.AddFrom(tablapadre);
            nt         = comando.AddFrom(llaves[0].hija);
            //ahora agrego mi seccion de where
            //como es la primer tabla,
            //me traigo mis llave primaria de la tabla padre
            foreach (Objetos.CParametro p in variables)
            {
                //veo si el campo esta en la tabla
                if (DB.ExisteCampoTabla(tablapadre, p.nombre))
                {
                    //si esta, por lo que la agrego a la lista del where
                    string cadena = "T" + ntp.ToString() + "." + p.nombre + "=@" + p.nombre;
                    comando.AddWhere(cadena);
                }
            }
            //ahora agrego la llave con la tabla padre
            //ahora agrego los where
            foreach (Objetos.CCampoFK cfk in llaves)
            {
                string s = "T" + nt.ToString() + "." + cfk.columnahija + "=T" + ntp.ToString() + "." + cfk.columnaMaestra;
                comando.AddWhere(s);
            }

            //ahora reviso si tengo hijos
            if (Hijas == null)
            {
                //no tengo, por lo que termino
                if (modo == Eliminar)
                {
                    comandos.Add(comando);
                }
                return(comandos);
            }
            //tengo hijos, por lo que recorro cada uno para que agregen su codigo al comando
            foreach (CLLaveForanea hija in Hijas)
            {
                //que agrege los demas comandos
                List <AsistSps.CDelete> l;
                l = hija.AgregaDelete(comando, DB, modo);
                //agrego todos los comandos a mi comando principal
                foreach (AsistSps.CDelete cd in l)
                {
                    comandos.Add(cd);
                }
            }
            //agrego mi comando al final de la lista
            if (modo == Eliminar)
            {
                comandos.Add(comando);
            }
            return(comandos);
        }