示例#1
0
        public void modDatCascada(List<string> dats,User user,Diccionario dic,List<string> regV)
        {
            string clavePrim="",claveOldPrim="";

            List<string> registroViejo = getRegMod(regV);

            for (int i = 0; i < atributos.Count; i++)
                if (atributos[i].TClave == 1)
                {
                    clavePrim = dats[i];
                    claveOldPrim = registroViejo[i];
                }
            //Modifica la bitacora
            modDatos(dats, user,regV);

            //Algoritmo para buscar y modificar en casacada
            for(int i =0;i<dic.Entidades.Count;i++)
            {
                for(int j=0;j<dic.Entidades[i].atributos.Count;j++)
                {
                    if(dic.Entidades[i].atributos[j].ApuntaPrim==nombre)
                    {
                        for(int k=0;k<dic.Entidades[i].listaRegistros.Count;k++)
                        {
                            if(dic.Entidades[i].listaRegistros[k][j]==claveOldPrim)
                            {
                                dic.Entidades[i].listaRegistros[k][j] = clavePrim;
                            }
                        }
                    }
                }
            }
        }
示例#2
0
 /// <summary>
 /// Funcion que permite inicializar la pantalla de acuerdo a si es alta, baja o modificacion
 /// </summary>
 private void inicializaFuncion()
 {
     this.Text = funcion;
     foreach(Diccionario i in manejador.Bases)
     {
         if (usuario.BaseDatos == i.NomDic)
         { 
             comboBox2.Items.Add(usuario.BaseDatos);
             baseActual = i;
         }
     }
     switch(funcion)
     {
         case "altas":
             buttonAddD.Visible = true;
             buttonDelD.Visible = false;
             buttonModD.Visible = false;
             break;
         case "bajas":
             buttonAddD.Visible = false;
             buttonDelD.Visible = true;
             buttonModD.Visible = false;
             break;
         case "mod":
             buttonAddD.Visible = false;
             buttonDelD.Visible = false;
             buttonModD.Visible = true;
             break;
     }
 }
示例#3
0
 public Organizacion(Diccionario dic,string ext)
 {
     string nombre;
     diccionario = dic;
     nombre=diccionario.NomDic.Substring(0,diccionario.NomDic.Length-3);
     archivo = new Archivo(nombre,ext);
 }
示例#4
0
 public Form1(Manager man)
 {
     InitializeComponent();
     modE = false;
     delE = false;
     delA = false;
     modA = false;
     org = false;
     manejador = man;
     NDic nuevo = new NDic();
     if (nuevo.ShowDialog() == DialogResult.OK)
     {
         this.Text = nuevo.NombreDic;
         inicializaNuevo();
         diccionario = new Diccionario(this.Text);
         manejador.Bases.Add(diccionario);
     }
     else
     {
         inicializaTodo();
     }
     foreach(Diccionario i in manejador.Bases)
     {
         comboBD.Items.Add(i.NomDic);
     }
 }
示例#5
0
 public Consultas(Manager man,string baseDatos)
 {
     InitializeComponent();
     manejador = man;
     baseActual = manejador.getBDbyName(baseDatos);
     llenaComboTablas();
 }
示例#6
0
 private void nuevoDiccionarioToolStripMenuItem_Click(object sender, EventArgs e)
 {
     NDic nuevo = new NDic();
     if (nuevo.ShowDialog() == DialogResult.OK)
     {
         this.Text = nuevo.NombreDic;
         inicializaNuevo();
         diccionario = new Diccionario(this.Text);
     }
 }
示例#7
0
 public Multillaves(Diccionario dic)
 {
     InitializeComponent();
     diccionario = dic;
     loadComboEnts();
     nombre = diccionario.NomDic.Substring(0, diccionario.NomDic.Length - 3);
     modD = false;
     delD = false;
     multilistas = new Multilistas(nombre);
 }
示例#8
0
 public secuencial(Diccionario dicc)
 {
     InitializeComponent();
     diccionario = dicc;
     organizacion = new Organizacion(diccionario, "sec");
     loadComboEnts();
     dats = new List<string>();
     DelD = false;
     modD = false;
 }
示例#9
0
        private void abriToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                this.Text = Path.GetFileName(openFileDialog1.FileName);
                diccionario = new Diccionario(this.Text);
                //Inicializa campos visibles y activados
                iniciaAbrir();

            }
        }
示例#10
0
        /// <summary>
        /// Funcion que es llamada desde la form para insertar un bloque
        /// </summary>
        /// <param name="ent"></param>
        /// <param name="dats"></param>
        /// <param name="diccionario"></param>
        /// <returns></returns>
        public bool insertaBloque(Entidad ent,List<string> dats,Diccionario diccionario)
        {
            bool res = false;
            long dirBloqNuevo = 0;
            //Primero escribe el bloque en el archivo
            dirBloqNuevo = escribeBloqueMulti(ent, dats);

            for (int i = 0; i < ent.Atributos.Count; i++)
                //Inserta ordenado(atributo,dato,dirBloque)
                insertaOrdenado(ent, ent.Atributos[i], dats[i], dirBloqNuevo, i, ent.Atributos[i].Tipo);

            return res;
        }
示例#11
0
 public Indexada(Diccionario dicc)
 {
     InitializeComponent();
     this.Text = "Secuencial Indexada";
     diccionario = dicc;
     loadComboEnts();
     dats = new List<string>();
     tablaIndices = new List<Indice>();
     string nombre = diccionario.NomDic.Substring(0, diccionario.NomDic.Length-3);
     indexada = new OrgIndex(nombre);
     modD = false;
     DelD = false;
 }
示例#12
0
        /// <summary>
        /// Sobrecarga de constructor para modificaciones
        /// </summary>
        /// <param name="atri"></param>
        /// <param name="dato"></param>
        /// <param name="mod"></param>
        /// <param name="baseAc"></param>
        /// <param name="ent"></param>
        public GetDatos(List<Atributo> atri,List<string> dat,bool mod,Diccionario baseAc,Entidad ent)
        {
            InitializeComponent();
            atributos = atri;
            diccionario = baseAc;
            noSecu = false;
            viejos = dat;
            modificando = mod;
            dato = new List<string>();
            cambioPrim = false;
            entidad = ent;

            dataGridView1.ColumnCount = ent.Atributos.Count - 6;

            for (int i = 0; i < ent.Atributos.Count - 6; i++)
            {
                if (ent.Atributos[i].TClave == 2)
                {
                    DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn();
                    List<String> itemCodeList = llenaCombo(ent.Atributos[i].ApuntaPrim, diccionario);
                    if (itemCodeList.Count == 0)
                    {
                        MessageBox.Show("Error aun no existen datos para llenar la clave externa", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        dato.Add("error");
                        this.Close();
                    }
                    combo.DataSource = itemCodeList;
                    combo.HeaderText = ent.Atributos[i].Nombre + "(" + ent.Atributos[i].Tipo + ")";
                    combo.Name = ent.Atributos[i].Nombre + "(" + ent.Atributos[i].Tipo + ")";
                    combo.Width = 100;
                    dataGridView1.Columns.Insert(0, combo);
                    dataGridView1.ColumnCount--;
                }
                else
                {
                    dataGridView1.Columns[i].Name = ent.Atributos[i].Nombre + "(" + ent.Atributos[i].Tipo + ")";
                    dataGridView1.Rows[0].Cells[i].Value = viejos[i];
                }
            }

        }
示例#13
0
        public void eliminaRegLog(List<string> regViejo, Diccionario baseDatos,User user)
        {

            eliminaCascadaLog(baseDatos, nombre, regViejo,user);

            for (int i = 0; i < listaRegistros.Count; i++)
                for (int j = 0; j < atributos.Count - 6; j++)
                    if (atributos[j].TClave == 1)
                        if (regViejo[j] == listaRegistros[i][j])
                        {
                            listaRegistros[i][listaRegistros[i].Count - 5] = DateTime.Today.ToShortDateString();
                            listaRegistros[i][listaRegistros[i].Count - 2] = user.Nombre;
                        }
        }
示例#14
0
 private void comboBD_SelectedValueChanged(object sender, EventArgs e)
 {
     foreach(Diccionario i in manejador.Bases)
     {
         if(i.NomDic==comboBD.Text)
         {
             diccionario = i;
             llenaDataE();
             llenaDataA();
             inicializaTodo();
         }
     }
 }
示例#15
0
 /// <summary>
 /// Constructor para ?
 /// </summary>
 /// <param name="atri"></param>
 /// <param name="dicc"></param>
 /// <param name="arch"></param>
 /// <param name="dato"></param>
 /// <param name="mod"></param>
 public GetDatos(Atributo atri, Diccionario dicc, Archivo arch,string dato,bool mod)
 {
     InitializeComponent();
     atributo = atri;
     diccionario = dicc;
     archivo = arch;
     noSecu = true;
     modificando = false;
     cambioPrim = false;
     viejo = dato;
     modificando = mod;
     /*
     textCaptura.Text = dato;
     groupCaptura.Text = atributo.Nombre + "(" + atributo.Tipo + ")";
     if (atributo.TClave == 2)
     {
         textCaptura.Visible = false;
         comboExternas.Visible = true;
         /*Llena el combo con los datos de clave primaria
         if (!llenaComboIndexada(atributo.ApuntaPrim))
         {
             MessageBox.Show("Error aun no existen datos para llenar la clave externa", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
             dato = "error";
             this.Close();
         }
     }*/
 }
示例#16
0
        private void eliminaCascadaLog(Diccionario baseDatos, string entidad, List<string> datos,User user)
        {
            List<string> aux = new List<string>();
            Entidad enti = baseDatos.getEntByName(entidad);

            foreach (Entidad i in baseDatos.Entidades)
                if (i.nombre != entidad)
                    for (int j = 0; j < i.Atributos.Count - 6; j++)
                        if (i.atributos[j].ApuntaPrim == entidad)
                            for (int l = 0; l < enti.atributos.Count; l++)
                                if (enti.atributos[l].TClave == 1)
                                    for (int k = 0; k < enti.ListaRegistros.Count; k++)
                                        if (datos[l] == i.listaRegistros[k][j])
                                        {
                                            i.ListaRegistros[k][i.ListaRegistros[k].Count - 5] = DateTime.Today.ToShortDateString();
                                            i.ListaRegistros[k][i.ListaRegistros[k].Count - 2] = user.Nombre;
                                            eliminaCascadaLog(baseDatos, i.nombre, i.ListaRegistros[k], user);
                                            return;
                                        }

        }
示例#17
0
        private void eliminaCascada(Diccionario baseDatos,string entidad,List<string> datos)
        {
            List<string> aux = new List<string>();
            Entidad enti = baseDatos.getEntByName(entidad);

            foreach (Entidad i in baseDatos.Entidades)
                if (i.nombre != entidad)
                    for (int j = 0; j < i.Atributos.Count-6; j++)
                        if (i.atributos[j].ApuntaPrim == entidad)
                            for(int l=0;l<enti.atributos.Count;l++)
                                if(enti.atributos[l].TClave==1)
                                    for (int k=0;k<enti.ListaRegistros.Count;k++)
                                        if (datos[l] == i.listaRegistros[k][j])
                                        {
                                            aux = i.listaRegistros[k];
                                            i.ListaRegistros.Remove(i.listaRegistros[k]);
                                            eliminaCascada(baseDatos, i.nombre, aux);
                                            return;
                                        }

        }
示例#18
0
        private List<string> llenaCombo(string dirEnt,Diccionario dicc)
        {
            List<string> listaDatos = new List<string>();

            //Obtener la entidad a la que apunta la direccion
            Entidad ent = dicc.getEntByName(dirEnt);
           foreach(List<string> i in ent.ListaRegistros)
                for(int j=0;j<ent.Atributos.Count;j++)
                    if(ent.Atributos[j].TClave==1)
                        listaDatos.Add(i[j]);

            return listaDatos;
            
        }
示例#19
0
        public void eliminaReg(List<string> regViejo, Diccionario baseDatos)
        {

            eliminaCascada(baseDatos, nombre, regViejo);

            for (int i = 0; i < listaRegistros.Count; i++)
                for (int j = 0; j < atributos.Count-6; j++)
                    if (atributos[j].TClave == 1)
                        if (regViejo[j] == listaRegistros[i][j])
                            listaRegistros.RemoveAt(i);
        }