Пример #1
0
        /// </summary>


        //////////////
        private void actualizaDataGridRegistros(List <string> lCamp)
        {
            dgConsultas.Rows.Clear();

            if (auxt.Registros.Count != 0)
            {
                int nReg = auxt.Registros.Count;
                for (int i = 0; i < nReg; i++)
                {
                    int nCampos    = lCamp.Count;
                    int nCamposReg = auxt.Registros[i].Count;
                    dgConsultas.Rows.Add();
                    int j2 = 0;
                    for (int j = 0; j < nCampos; j++)
                    {
                        RegistroAtributo auxr = null;

                        auxr = auxt.Registros[i].FirstOrDefault(p => p.Atr.Nombre == lCamp[j] || p.Atr.NombreExt == lCamp[j]);
                        if (auxr != null)
                        {
                            dgConsultas.Rows[i].Cells[j].Value = auxr.Reg;
                        }
                        else
                        {
                            dgConsultas.Rows[i].Cells[j].Value = "null";
                        }
                    }
                }
            }
        }
Пример #2
0
        private bool IntegridadReferencialClavesPrimarias(RegistroAtributo regAt)
        {
            bool existe = false;

            foreach (Tabla val in lTablas)
            {
                Atributo at = null;
                at = val.LAtributo.FirstOrDefault(p => p.Nombre == regAt.Atr.Nombre);
                if (at != null && at.TipoIndice == "Clave Foranea")
                {
                    int nReg = val.Registros.Count;
                    for (int i = 0; i < nReg; i++)
                    {
                        RegistroAtributo aux = null;
                        aux = val.Registros[i].FirstOrDefault(p => p.Reg == regAt.Reg && p.Atr.Nombre == regAt.Atr.Nombre);
                        if (aux != null)
                        {
                            existe = true;
                            break;
                        }
                        else
                        {
                            existe = false;
                        }
                    }
                }
            }

            return(existe);
        }
Пример #3
0
        private void btEliminaRegistro_Click(object sender, EventArgs e)
        {
            if (iIndiceRegistro != -1)
            {
                DialogResult res = MessageBox.Show("¿Esta seguro de eliminar este registro?, los cambios realizados no podran deshacerse", "Eliminar", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

                if (res == DialogResult.OK)
                {
                    RegistroAtributo r      = auxTab.Registros[iIndiceRegistro].FirstOrDefault(p => p.Atr.TipoIndice == "Clave Primaria");
                    bool             existe = IntegridadReferencialClavesPrimarias(r);

                    if (!existe)
                    {
                        auxTab.Registros.RemoveAt(iIndiceRegistro);
                        auxTab.ActualizaTabla();
                        actualizaDataGridRegistros();
                    }
                    else
                    {
                        MessageBox.Show("No se puede eliminar el registro por que no se está respetando la integridad de los datos");
                    }
                }

                iIndiceRegistro = -1;
            }
            else
            {
                MessageBox.Show("Elija el registro que desea eliminar");
            }
        }
        //Boton Agregar
        private void button1_Click(object sender, EventArgs e)
        {
            if (i < inumCampos && tBoxReg.Text != "")
            {
                RegistroAtributo r = new RegistroAtributo(tBoxReg.Text, listaCampos[i]);
                registro.Add(r);
                i++;
                if (i < inumCampos)
                {
                    if (listaCampos[i].TipoIndice == "Clave Foranea")
                    {
                        label.Text = listaCampos[i].NombreExt;
                    }
                    else
                    {
                        label.Text = listaCampos[i].Nombre;
                    }
                }


                if (i < inumCampos)
                {
                    if (BandInsercionModificacion == 1 && (listaCampos[i].TipoIndice == "Clave Primaria" || listaCampos[i].TipoIndice == "Clave Secundaria"))
                    {
                        i++;
                    }
                }

                if (i < inumCampos)
                {
                    if (listaCampos[i].TipoIndice == "Clave Foranea")
                    {
                        label.Text = listaCampos[i].NombreExt;
                    }
                    else
                    {
                        label.Text = listaCampos[i].Nombre;
                    }

                    tBoxReg.Text = "";
                }

                if (i == inumCampos)
                {
                    Aceptar.Visible = true;
                    button1.Visible = false;
                    tBoxReg.Visible = false;
                    label.Text      = "Todos los campos han sido completados";
                    i++;
                }
            }
            else
            {
                MessageBox.Show("Introdusca la información");
            }
        }
Пример #5
0
        private void btModificaRegistro_Click(object sender, EventArgs e)
        {
            if (iIndiceRegistro != -1)
            {
                List <RegistroAtributo> r = new List <RegistroAtributo>();
                Modifica_Atributo       f = new Modifica_Atributo(auxTab.LAtributo, 1);

                if (f.ShowDialog() == DialogResult.OK)
                {
                    r = f.Reg;
                    int             ntam   = r.Count;
                    int             i2     = 0;
                    List <Atributo> l      = auxTab.LAtributo;
                    bool            existe = IntegridadReferencialClavesSecundarias(r);

                    if (existe)
                    {
                        foreach (Atributo value in l)
                        {
                            RegistroAtributo RegistroActual = null;
                            RegistroAtributo RegistroNuevo  = null;
                            RegistroActual = auxTab.Registros[iIndiceRegistro].FirstOrDefault(p => p.Atr.Nombre == value.Nombre);
                            RegistroNuevo  = r.FirstOrDefault(p => p.Atr.Nombre == value.Nombre);

                            if (RegistroActual != null && RegistroNuevo != null)
                            {
                                RegistroActual.Reg = RegistroNuevo.Reg;
                            }
                            else
                            if (RegistroNuevo != null)
                            {
                                auxTab.Registros[iIndiceRegistro].Add(RegistroNuevo);
                            }
                        }
                        auxTab.ActualizaTabla();
                        actualizaDataGridRegistros();
                    }
                    else
                    {
                        MessageBox.Show("No se puede insertar el registro por que no se está respetando la integridad de los datos");
                    }
                }

                iIndiceRegistro = -1;
            }
            else
            {
                MessageBox.Show("Seleccione un registro en la tabla");
            }
        }
Пример #6
0
        private bool IntegridadReferencialClavesSecundarias(List <RegistroAtributo> reg)
        {
            bool existe = false;
            List <RegistroAtributo> lClavesSec = null;

            lClavesSec = reg.Where(p => p.Atr.TipoIndice == "Clave Foranea").ToList();
            if (lClavesSec.Count != 0)
            {
                foreach (RegistroAtributo value in lClavesSec)
                {
                    foreach (Tabla val in lTablas)
                    {
                        Atributo at = null;
                        at = val.LAtributo.FirstOrDefault(p => p.Nombre == value.Atr.Nombre);
                        if (at != null && at.TipoIndice == "Clave Primaria")
                        {
                            int nReg = val.Registros.Count;
                            for (int i = 0; i < nReg; i++)
                            {
                                RegistroAtributo aux = null;
                                aux = val.Registros[i].FirstOrDefault(p => p.Reg == value.Reg && p.Atr.Nombre == value.Atr.Nombre);
                                if (aux != null)
                                {
                                    existe = true;
                                    break;
                                }
                                else
                                {
                                    existe = false;
                                }
                            }
                        }
                    }
                    if (!existe)
                    {
                        break;
                    }
                }
            }
            else
            {
                existe = true;
            }

            return(existe);
        }
Пример #7
0
        //Nuevo Registro
        private void NewAdd_Click(object sender, EventArgs e)
        {
            List <RegistroAtributo> r = new List <RegistroAtributo>();
            Modifica_Atributo       f = new Modifica_Atributo(auxTab.LAtributo, 0);

            if (f.ShowDialog() == DialogResult.OK)
            {
                r = f.Reg;

                //Antes de insertar el registro se valida la integridad de los datos, si los datos que se pretenden insertar "Existen"
                //A estos se les permite la inserción, aun que despues de haber pasado este primer filtro tambien se verifica
                //Si la clave primaria que identifica al Registro ya exsite como identificador de algun otro registro y si esto es asi
                //No se permite su inserción.
                bool existe = IntegridadReferencialClavesSecundarias(r);

                if (existe)
                {
                    if (auxTab.BPK)
                    {
                        RegistroAtributo ClavePrimaria = r.FirstOrDefault(p => p.Atr.TipoIndice == "Clave Primaria");
                        if (auxTab.CPrimarias.Contains(ClavePrimaria.Reg))
                        {
                            MessageBox.Show("No se puede insertar el registro por que ya existe una Clave Primaria con el mismo valor");
                        }
                        else
                        {
                            auxTab.Registros.Add(r);
                            auxTab.CPrimarias.Add(ClavePrimaria.Reg);
                            auxTab.BandReg = true;
                        }
                    }
                    else
                    {
                        auxTab.Registros.Add(r);
                        auxTab.BandReg = true;
                    }
                    auxTab.ActualizaTabla();
                    actualizaDataGridRegistros();
                }
                else
                {
                    MessageBox.Show("No se puede insertar el registro por que no se está respetando la integridad de los datos");
                }
            }
        }
Пример #8
0
        private void btnEliminaAtr_Click(object sender, EventArgs e)
        {
            Atributo     atAux;
            DialogResult res = MessageBox.Show("¿Esta seguro de eliminar este atributo?, los cambios realizados no podran deshacerse", "Eliminar", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

            if (res == DialogResult.OK)
            {
                if (sNombreAtr != "")
                {
                    atAux = auxTab.LAtributo.FirstOrDefault(p => p.Nombre == sNombreAtr);

                    if (atAux.TipoIndice == "Clave Primaria" && auxTab.BandReg)
                    {
                        MessageBox.Show("No se puede eliminar este atributo por que es una llave primaria que actualmente contiene datos");
                    }
                    else
                    {
                        if (atAux.TipoIndice == "Clave Primaria")
                        {
                            auxTab.BPK = false;
                        }
                        auxTab.LAtributo.Remove(atAux);
                        foreach (List <RegistroAtributo> value in auxTab.Registros)
                        {
                            RegistroAtributo auxreg = value.FirstOrDefault(p => p.Atr.Nombre == sNombreAtr);
                            value.Remove(auxreg);
                        }
                        auxTab.ActualizaTabla();
                        actualizaDataGridAtributos();
                    }
                }
                else
                {
                    MessageBox.Show("Elija el atributo que desea eliminar");
                }
            }
        }