Esempio n. 1
0
        private string GenerarTabla(bool ejecutar)
        {
            Objetos.CDefinicionTabla tabla = new Objetos.CDefinicionTabla();
            tabla.Nombre = TNombreTabla.Text.Trim();
            //ahora agrego los campos
            DataTable campos     = DSTabla.Tables["Campos"];
            DataTable Fks        = DSTabla.Tables["Relaciones"];
            DataTable DetallesFK = DSTabla.Tables["RelacionDetalle"];

            foreach (DataRow dr in campos.Rows)
            {
                Objetos.CDefinicionCampo obj = new Objetos.CDefinicionCampo();
                obj.Nombre = dr["Nombre"].ToString();
                obj.Tipo   = dr["Tipo"].ToString();
                if (dr["PK"].ToString().Trim() != "")
                {
                    obj.ClavePrimaria = bool.Parse(dr["PK"].ToString());
                }
                if (dr["Nulos"].ToString().Trim() != "")
                {
                    obj.AceptaNulos = bool.Parse(dr["Nulos"].ToString());
                }
                if (dr["AutoIncremental"].ToString().Trim() != "")
                {
                    obj.AutoIncremental = bool.Parse(dr["AutoIncremental"].ToString());
                }
                if (dr["Longitud"].ToString().Trim() != "")
                {
                    obj.Longitud = int.Parse(dr["Longitud"].ToString());
                }
                obj.ValorDefault   = dr["ValorDeafult"].ToString();
                obj.ValorCalculado = dr["ValorCalculado"].ToString();
                if (dr["Unico"].ToString().Trim() != "")
                {
                    obj.Unico = bool.Parse(dr["Unico"].ToString());
                }
                tabla.Campos.Add(obj);
                if (obj.ClavePrimaria)
                {
                    tabla.PrimaryKey.Add(obj);
                }
            }
            //ahora agrego las llaves foraneas
            foreach (DataRow fk in Fks.Rows)
            {
                Objetos.CDefinicionFK obj = new Objetos.CDefinicionFK();
                obj.Nombre     = fk["Nombre"].ToString();
                obj.TablaPadre = fk["TablaPadre"].ToString();
                obj.TablaHija  = fk["TablaHija"].ToString();
                //ahora agrego el detalle
                foreach (DataRow detalle in DetallesFK.Rows)
                {
                    if (detalle["Nombre"].ToString() == obj.Nombre)
                    {
                        Objetos.CDefinicionDetalleFK obj2 = new Objetos.CDefinicionDetalleFK();
                        obj2.CampoPadre = detalle["ColumnaPadre"].ToString();
                        obj2.CampoHijo  = detalle["ColumnaHija"].ToString();
                        obj.Campos.Add(obj2);
                    }
                }
                tabla.LLavesForaneas.Add(obj);
            }
            //agrego los valores unicos
            DataTable unicos = DSTabla.Tables["CamposUnicos"];

            foreach (DataRow dru in unicos.Rows)
            {
                tabla.Unicos.Add(dru["Campos"].ToString());
            }
            return(DB.CreaTabla(tabla, ejecutar));
        }