コード例 #1
0
        private void MuestraCamposTabla()
        {
            //lleno el combo de los campos de la tabla
            ComboCampo.Items.Clear();
            List <Objetos.CParametro> lista;

            lista = DB.DameCamposTabla(Tabla);
            foreach (Objetos.CParametro obj in lista)
            {
                ComboCampo.Items.Add(obj);
                ListaCampos.Items.Add(obj);
            }
        }
コード例 #2
0
        public string DameInsert(string tabs, string sx)
        {
            //regresa la sintaxis de un insert en una tabla
            Objetos.CSysObject Tabla = Lista[ListaObjetos.SelectedIndex];
            string             s     = sx + "into " + Tabla.Nombre + "(";
            string             s2    = "\r\n" + tabs + "values(";

            System.Collections.Generic.List <Objetos.CParametro> campos;
            campos = DB.DameCamposTabla(Tabla.Nombre);
            bool primero = true;

            foreach (Objetos.CParametro campo in campos)
            {
                if (primero == true)
                {
                    s       = s + campo.nombre;
                    primero = false;
                }
                else
                {
                    s  = s + "," + campo.nombre;
                    s2 = s2 + ",";
                }
            }
            s = s + ")" + s2 + ")";
            return(s);
        }
コード例 #3
0
 public CTabla(Controladores_DB.IDataBase db, string nombre, Graphics gp)
 {
     GP     = gp;
     DB     = db;
     Nombre = nombre;
     //cargo todos mis campos de la tabla
     Campos  = DB.DameCamposTabla(nombre);
     NCampos = Campos.Count;
     //inicializo algunas variables
     DY = 15; //marca la distancia entre relglon y renglon
     //calculo el ancho de la tabla
     Ancho   = Nombre.Length;
     MaxText = Nombre;
     //recorro todos los campos de la tabla
     foreach (Objetos.CParametro obj in Campos)
     {
         string s = obj.nombre + ":" + obj.TipoSP;
         if (s.Length > Ancho)
         {
             Ancho   = s.Length;
             MaxText = s;
         }
     }
     //genero el tipo de letra que voy a utilizar
     Font = new Font("Times New Roman", 9, FontStyle.Bold);
 }
コード例 #4
0
        public override void Inicializate()
        {
            string tabla = (string)DameValor("Tabla");

            if (Tabla == tabla)
            {
                //no nececito actualizar nada
                return;
            }
            Tabla = tabla;
            //cambio el nombre de la tabla, por lo que actualizo mis listas
            ListaCampos.Items.Clear();
            ListaParametros.Items.Clear();
            //me traigo la lista de campos de la tabla
            List <Objetos.CParametro> campos = DB.DameCamposTabla(Tabla);
            List <Objetos.CParametro> lista  = (List <Objetos.CParametro>)DameValor("ListaParametros");

            foreach (Objetos.CParametro obj in campos)
            {
                bool encontrado = false;
                //veo si el campo esta en la lista de parametros
                foreach (Objetos.CParametro p in lista)
                {
                    if (obj.nombre == p.nombre)
                    {
                        encontrado = true;
                        break;
                    }
                }
                if (encontrado == false)
                {
                    ListaCampos.Items.Add(obj);
                }
            }
        }
コード例 #5
0
        private void ListaTablas_AfterSelect(object sender, TreeViewEventArgs e)
        {
            TablaActual = e.Node.Text;
            //ahora me traigo los campos de la tabla
            List <Objetos.CParametro> Campos;

            Campos = DB.DameCamposTabla(TablaActual);
            //lleno la lista de campos
            ListaCampos.Nodes.Clear();
            foreach (Objetos.CParametro obj in Campos)
            {
                TreeNode nodo = new TreeNode(obj.nombre);
                nodo.Tag = obj;
                //selecciono el icono que le corresponde
                //hay 4 posobilidades
                //1. que sea un campo normal
                //2. que dea un campo con llave foranea
                //3. que sea un campo con llave primaria
                //4. que sea un campo con llave primaria y foranea
                //veo si el campo tiene llave primaria
                obj.LLaveForanea = DB.EsLLaveForanea(TablaActual, obj.nombre);
                if (obj.LLavePrimaria && obj.LLaveForanea)
                {
                    nodo.ImageIndex         = 4;
                    nodo.SelectedImageIndex = 4;
                }
                else if (obj.LLavePrimaria)
                {
                    nodo.ImageIndex         = 3;
                    nodo.SelectedImageIndex = 3;
                }
                else if (obj.LLaveForanea)
                {
                    nodo.ImageIndex         = 2;
                    nodo.SelectedImageIndex = 2;
                }
                else
                {
                    nodo.ImageIndex         = 1;
                    nodo.SelectedImageIndex = 1;
                }
                ListaCampos.Nodes.Add(nodo);
            }
        }
コード例 #6
0
        public override void Inicializate()
        {
            string tipo = (string)DameValor("Tipo");

            if (tipo == "Lectura")
            {
                CHExcepcion.Visible  = true;
                label3.Visible       = true;
                TExcepcion.Visible   = true;
                label5.Visible       = true;
                TComentarios.Visible = true;
            }
            else
            {
                CHExcepcion.Visible  = false;
                label3.Visible       = false;
                TExcepcion.Visible   = false;
                label5.Visible       = false;
                TComentarios.Visible = false;
            }

            string tabla = (string)DameValor("Tabla");

            if (Tabla == tabla)
            {
                //no nececito actualizar nada
                return;
            }
            Tabla = tabla;
            //cambio el nombre de la tabla, por lo que actualizo mis listas
            ListaCampos.Items.Clear();
            ListaParametros.Items.Clear();
            //me traigo la lista de campos de la tabla
            List <Objetos.CParametro> campos = DB.DameCamposTabla(Tabla);

            foreach (Objetos.CParametro obj in campos)
            {
                if (obj.LLavePrimaria == true && (tipo == "Update" || tipo == "Delete"))
                {
                    ListaParametros.Items.Add(obj);
                }
                else
                {
                    ListaCampos.Items.Add(obj);
                }
            }
            if (tipo == "Delete")
            {
                //es de borrado, por loque desactivo unos botones
                ListaCampos.Enabled = false;
                //ListaParametros.Enabled = false;
                //ListaParametros.ContextMenu = null;
            }
        }
コード例 #7
0
 private void FormDocumentar_Load(object sender, EventArgs e)
 {
     System.Collections.Generic.List <Objetos.CParametro> Campos;
     Campos = DB.DameCamposTabla(TNombreTabla.Text);
     Objetos.CParametro tabla = new Visor_sql_2015.Objetos.CParametro();
     tabla.nombre      = "Tabla " + TNombreTabla.Text;
     tabla.Descripcion = DB.DaMeDescripcionTabla(TNombreTabla.Text);
     ListaCampos2.Items.Add(tabla);
     foreach (Objetos.CParametro obj in Campos)
     {
         obj.Descripcion = DB.DameDescripcionCampo(TNombreTabla.Text, obj.nombre);
         obj.Modificado  = false;
         ListaCampos2.Items.Add(obj);
     }
     //WindowState = FormWindowState.Maximized;
 }
コード例 #8
0
        private void ListaObjetos_SelectedIndexChanged(object sender, EventArgs e)
        {
            DlstCampos.Items.Clear();
            if (ListaObjetos.SelectedIndex == -1)
            {
                return;
            }
            List <Objetos.CParametro> campos;
            string tabla = (string)ListaObjetos.Items[ListaObjetos.SelectedIndex];

            campos = DB.DameCamposTabla(tabla);
            foreach (Objetos.CParametro obj in campos)
            {
                DlstCampos.Items.Add(obj);
            }
        }
コード例 #9
0
        private void BBuscarTablaOrigen_Click(object sender, EventArgs e)
        {
            Formularios.FormBuscarTabla dlg = new Formularios.FormBuscarTabla(DBOrigen, Visor_sql_2015.Controladores_DB.TIPOOBJETO.TABLAX);
            if (dlg.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }
            ListaCamposOrigen.Items.Clear();
            ListaCamposOrigen2.Items.Clear();
            TTablaOrigen.Text = dlg.Tabla;
            List <Objetos.CParametro> CamposOrigen1 = DBOrigen.DameCamposTabla(dlg.Tabla);

            foreach (Objetos.CParametro obj in CamposOrigen1)
            {
                ListaCamposOrigen.Items.Add(obj);
            }
        }
コード例 #10
0
        private void BBUscarTablaDestino_Click(object sender, EventArgs e)
        {
            Formularios.FormBuscarTabla dlg = new Formularios.FormBuscarTabla(DBDestino, Visor_sql_2015.Controladores_DB.TIPOOBJETO.TABLAX);
            if (dlg.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }
            ListaCamposDestino2.Items.Clear();
            ListaCamposDestino.Items.Clear();
            TTablaDestino.Text = dlg.Tabla;
            List <Objetos.CParametro> campos;

            campos = DBDestino.DameCamposTabla(dlg.Tabla);
            foreach (Objetos.CParametro obj in campos)
            {
                ListaCamposDestino.Items.Add(obj);
            }
        }
コード例 #11
0
        private void CreaHojaTabla(OleDbCommand cmd, string tabla)
        {
            string tabla2 = "";

            if (tabla.Length > 30)
            {
                tabla2 = tabla.Substring(0, 30);
            }
            else
            {
                tabla2 = tabla;
            }
            cmd.CommandText = "create table " + tabla2 + "(Nombre char(10))";
            cmd.ExecuteNonQuery();
            cmd.CommandText = "UPDATE [" + tabla2 + "$A1:A1] SET F1=" + "\'Nombre del campo \'";
            cmd.ExecuteNonQuery();
            cmd.CommandText = "UPDATE [" + tabla2 + "$B1:B1] SET F1=" + "\'Tipo \'";
            cmd.ExecuteNonQuery();
            cmd.CommandText = "UPDATE [" + tabla2 + "$C1:C1] SET F1=" + "\'Longitud\'";
            cmd.ExecuteNonQuery();
            cmd.CommandText = "UPDATE [" + tabla2 + "$D1:D1] SET F1=" + "\'Acepta nulos \'";
            cmd.ExecuteNonQuery();
            //me traigo los campos de la tabla
            System.Collections.Generic.List <Objetos.CParametro> Campos = DB.DameCamposTabla(tabla);
            int i, n;

            n = Campos.Count;
            for (i = 0; i < n; i++)
            {
                int pos = i + 2;
                //agrego los datos de los campos
                Objetos.CParametro obj = Campos[i];
                cmd.CommandText = "UPDATE [" + tabla2 + "$A" + pos.ToString() + ":A" + pos.ToString() + "] SET F1=" + "\'" + obj.nombre + "\'";
                cmd.ExecuteNonQuery();
                cmd.CommandText = "UPDATE [" + tabla2 + "$B" + pos.ToString() + ":B" + pos.ToString() + "] SET F1=" + "\'" + obj.tipo + " \'";
                cmd.ExecuteNonQuery();
                cmd.CommandText = "UPDATE [" + tabla2 + "$C" + pos.ToString() + ":C" + pos.ToString() + "] SET F1=" + "\'" + obj.Logitud + " \'";
                cmd.ExecuteNonQuery();
                cmd.CommandText = "UPDATE [" + tabla2 + "$D" + pos.ToString() + ":D" + pos.ToString() + "] SET F1=" + "\'" + obj.NULOS + " \'";
                cmd.ExecuteNonQuery();
            }
        }
コード例 #12
0
ファイル: FormTabla.cs プロジェクト: OscarResendiz/VisorSQL
 public FormTablaX(string Nombre, Controladores_DB.IDataBase db, Controladores_DB.TIPOOBJETO tipo)
 {
     DB   = db;
     Tipo = tipo;
     InitializeComponent();
     TNombre.Text = Nombre;
     Text         = Nombre;
     Lfecha.Text  = "Fecha de modificacion: " + DB.DameFechaModificacion(TNombre.Text);
     Campos       = DB.DameCamposTabla(TNombre.Text);
     MuestraCampos();
     if (cTabla1.VerticalScroll == true)
     {
         //tiene el scrol porll que asigno el tamaño
         Width = 308;
     }
     else
     {
         Width = 287;
     }
 }
コード例 #13
0
        public override void Inicializate()
        {
            string tabla = (string)DameValor("Tabla");

            if (Tabla == tabla)
            {
                //no nececito actualizar nada
                return;
            }
            Tabla = tabla;
            //cambio el nombre de la tabla, por lo que actualizo mis listas
            ListaCampos.Items.Clear();
            ListaParametros.Items.Clear();
            //me traigo la lista de campos de la tabla
            List <Objetos.CParametro> campos = DB.DameCamposTabla(Tabla);

            foreach (Objetos.CParametro obj in campos)
            {
                ListaCampos.Items.Add(obj);
            }
        }
コード例 #14
0
        private void ValidaLLaveForanea(Objetos.CLLaveForanea fk, string tabs)
        {
            string s       = "";
            bool   primero = true;
            string tab2    = tabs + "\t";
            string tab3    = tab2 + "\t";
            //me traigo los campos y la tabla de la llave
            List <Objetos.CCampoFK>   fks = DB.DameCamposFK(fk.name);
            List <Objetos.CParametro> campos;

            AddLine(tabs + "--Genero unbucle para recorrer todos los registros de la tabla");
            AddLine(tabs + "declare @" + fk.name + " int");
            AddLine(tabs + "select @" + fk.name + " =1");
            AddLine(tabs + "while(@" + fk.name + " =1)");
            AddLine(tabs + "begin");
            AddLine(tab2 + "--vero si existen registros en la tabla " + fks[0].hija);
            s = "if exists(select * from " + fks[0].hija + " where ";
            foreach (Objetos.CCampoFK obj in fks)
            {
                if (primero == true)
                {
                    primero = false;
                }
                else
                {
                    s = s + " and ";
                }
                s = s + obj.columnahija + "=@" + obj.columnaMaestra;
            }
            AddLine(tab2 + s + ")");
            AddLine(tab2 + "begin");
            //veo si hay que generar una excepcion
            if (fk.GenerarExcepcion == true)
            {
                //como hay que generar una excepcion, ya no valido las tablas hijas
                //agrego el codigo para generar dicha excepcion
                if (fk.Mensage != null && fk.Mensage.Trim() != "")
                {
                    AddLine(tab3 + "RAISERROR(\'" + fk.Mensage + "\', 16, 1)");
                }
                else
                {
                    AddLine(tab3 + "RAISERROR(\'No se puede eliminar el registro de la tabla " + fks[0].maestra + " porque la tabla " + fks[0].hija + " contiene información\', 16, 1)");
                }
                AddLine(tab3 + "return");
            }
            else
            {
                //me traigo el primer registro encontrado con la llave foranea
                //me traigo los campos de lllave primaria que no esten dentro de la llave foranea
                campos = DB.DameCamposTabla(fks[0].hija);
                bool tienecampos = false;
                s       = "select top 1 ";
                primero = true;
                foreach (Objetos.CParametro campo in campos)
                {
                    if (campo.LLavePrimaria == true)
                    {
                        //veo si no esta dentro de los campos de llave foranea
                        bool encontrado = false;
                        foreach (Objetos.CCampoFK objfk in fks)
                        {
                            if (objfk.columnahija == campo.nombre)
                            {
                                encontrado = true;
                                break;
                            }
                        }
                        if (encontrado == false)
                        {
                            tienecampos = true;
                            if (primero == true)
                            {
                                primero = false;
                            }
                            else
                            {
                                s = s + ",";
                            }
                            s = s + "@" + campo.nombre + "=" + campo.nombre;
                        }
                    }
                }
                s       = s + " from " + fks[0].hija + " where ";
                primero = true;
                foreach (Objetos.CCampoFK obj in fks)
                {
                    if (primero == true)
                    {
                        primero = false;
                    }
                    else
                    {
                        s = s + " and ";
                    }
                    s = s + obj.columnahija + "=@" + obj.columnaMaestra;
                }
                if (tienecampos == true)
                {
                    AddLine(tab3 + s);
                }
                //hay que borar en cascada
                if (fk.Hijas != null)
                {
                    foreach (Objetos.CLLaveForanea obj in fk.Hijas)
                    {
                        ValidaLLaveForanea(obj, tab3);
                    }
                }
                //ahora borro mi registro
                //ahora borro el olos registros hijos
                primero = true;
                s       = "delete " + fks[0].hija + " where ";
                foreach (Objetos.CParametro campo in campos)
                {
                    if (campo.LLavePrimaria == true)
                    {
                        if (primero == true)
                        {
                            primero = false;
                        }
                        else
                        {
                            s = s + " and ";
                        }
                        s = s + campo.nombre + "=@" + campo.nombre;
                    }
                }
                AddLine(tab3 + s);
            }
            AddLine(tab2 + "end");
            AddLine(tab2 + "else");
            AddLine(tab2 + "begin");
            AddLine(tab3 + "break");
            AddLine(tab2 + "end");
            AddLine(tabs + "end");
        }
コード例 #15
0
        private void AnalizaSiguiente()
        {
            if (Lista.Count == 0)
            {
                //ya se termino el analisis
                cBarraProgreso1.Texto   = "Exportacion terminada";
                TimerDocumentar.Enabled = false;
                BAnalizar.Enabled       = true;
                return;
            }
            Objetos.CSysObject obj = Lista[0];
            Lista.RemoveAt(0);
            cBarraProgreso1.Texto = "Analizando: " + obj.Nombre;
            cBarraProgreso1.Progreso++;
            //me traigo la docuemntacion de la tabla
            //veo si existe en la base de datos destino
            Objetos.CSysObject        ObjDest;
            List <Objetos.CSysObject> l = DB2.BuscaObjetos(obj.Nombre, obj.TipoObjeto);

            if (l.Count == 0)
            {
                return;
            }
            ObjDest = l[0];
            if (ObjDest == null)
            {
                return;
            }
            if (obj.Nombre.ToLower().Trim() != ObjDest.Nombre.ToLower().Trim())
            {
                return;
            }
            //aplico la docuemntacion
            string DescTabla   = DB.DaMeDescripcionTabla(obj.Nombre);
            bool   documentada = false;

            if (DescTabla.Trim() != "")
            {
                documentada = true;
                DB2.GusrdaDescripcionTabla(ObjDest.Nombre, DescTabla);
            }
            //me traigo los campos de la tabla
            System.Collections.Generic.List <Objetos.CParametro> Campos;
            Campos = DB.DameCamposTabla(obj.Nombre);
            foreach (Objetos.CParametro campo in Campos)
            {
                campo.Descripcion = DB.DameDescripcionCampo(obj.Nombre, campo.nombre);
                if (campo.Descripcion.Trim() != "")
                {
                    try
                    {
                        DB2.GuardaDescripcionCampo(ObjDest.Nombre, campo.nombre, campo.Descripcion);
                        documentada = true;
                    }
                    catch (System.Exception ex)
                    {
                        TablasDocuemntadas.Items.Add(ex.Message);
                    }
                }
            }
            if (documentada == true)
            {
                TablasDocuemntadas.Items.Add(obj.Nombre);
            }
        }
コード例 #16
0
        private void ComparaTablas(Objetos.CSysObject obj, Objetos.CSysObject obj2)
        {
            //compara los campos de una tabla
            System.Collections.Generic.List <Objetos.CParametro> l1;
            System.Collections.Generic.List <Objetos.CParametro> l2;
            l1 = DB.DameCamposTabla(obj.Nombre);
            l2 = DB2.DameCamposTabla(obj.Nombre);
            if (l1.Count != l2.Count)
            {
                //son diferentes
                AgregaDiferencia(obj, "La cantidad de campos no coinciden " + l1.Count + "->" + l2.Count, 2);
                if (l2.Count > l1.Count)
                {
                    //faltan campos en la tabla origen, asi que a buscarlos
                    foreach (Objetos.CParametro c2 in l2)
                    {
                        bool encontrado = false;
                        foreach (Objetos.CParametro c1 in l1)
                        {
                            if (c1.nombre.ToLower().Trim() != c2.nombre.ToLower().Trim())
                            {
                                //que se salte al siguiente campo
                                continue;
                            }
                            encontrado = true;
                        }
                        if (encontrado == false)
                        {
                            AgregaDiferencia(obj, "Falta el campo " + c2.nombre + " en la tabla origen", 1);
                        }
                    }
                }
                //return;
            }
            int n;

            n = l2.Count;
            //comparo campo por campo
            foreach (Objetos.CParametro c1 in l1)
            {
                //primero veo si el campo existe en la otra tabla
                bool encontrado = false;
                foreach (Objetos.CParametro c2 in l2)
                {
                    //comparo los campos
                    if (c1.nombre.ToLower().Trim() != c2.nombre.ToLower().Trim())
                    {
                        //que se salte al siguiente campo
                        continue;
                    }
                    encontrado = true;//lo marco como encontrado
                    if (c1.tipo != c2.tipo)
                    {
                        //son diferentes
                        AgregaDiferencia(obj, "Los tipos del campo " + c1.nombre.Trim() + " no coinciden " + c1.tipo.Trim() + " " + c2.tipo.Trim(), 2);
                        //return;
                    }
                    if (c1.Logitud != c2.Logitud)
                    {
                        //son diferentes
                        AgregaDiferencia(obj, "La longitud del campo " + c1.nombre.Trim() + " no coincide " + c1.Logitud.ToString() + " " + c2.Logitud.ToString(), 2);
                        //return;
                    }
                    if (c1.NULOS.ToLower().Trim() != c2.NULOS.ToLower().Trim())
                    {
                        //son diferentes
                        AgregaDiferencia(obj, "La propiedad de aceptar nulos no coinciden " + c1.nombre.Trim() + " " + c1.NULOS.Trim() + " " + c2.NULOS.Trim(), 2);
                        //return;
                    }
                    if (c1.collation != c2.collation)
                    {
                        //son diferentes
                        AgregaDiferencia(obj, "La configuración regional de los campos no coincide " + c1.nombre.Trim() + " " + c1.collation.Trim() + " " + c2.collation.Trim(), 2);
                    }
                    //checo su propiedad de identidad
                    Objetos.CIdentity id1, id2;
                    id1 = DB.DameIdentity(obj.Nombre, c1.nombre);
                    id2 = DB2.DameIdentity(obj.Nombre, c2.nombre);
                    if (id1.EsIdentidad != id2.EsIdentidad)
                    {
                        AgregaDiferencia(obj, "La propiedad identity no coinciden " + id1.EsIdentidad.ToString() + " " + id2.EsIdentidad.ToString() + " campo " + c1.nombre, 2);
                    }
                    else if (id1.EsIdentidad == true)
                    {
                        //si son identidad, ahora chehco sus propiedades
                        if (id1.incremento != id2.incremento)
                        {
                            AgregaDiferencia(obj, "En la propiedad identity no coinciden los imcrementos " + id1.incremento.ToString() + " " + id2.incremento.ToString() + " campo " + c1.nombre, 2);
                        }
                        if (id1.inicio != id2.inicio)
                        {
                            AgregaDiferencia(obj, "En la propiedad identity no coinciden los inicios " + id1.inicio.ToString() + " " + id2.inicio.ToString() + " campo " + c1.nombre, 2);
                        }
                    }
                    //veo si es un campo que tiene valores por default
                    Objetos.CDefault df1, df2;
                    df1 = DB.DameDefault(obj.Nombre, c1.nombre);
                    df2 = DB.DameDefault(obj.Nombre, c2.nombre);
                    if (df1.EsDeafult != df2.EsDeafult)
                    {
                        AgregaDiferencia(obj, "En el campo " + c1.nombre + " la propiedad default no coinciden " + df1.EsDeafult.ToString() + ", " + df2.EsDeafult.ToString(), 2);
                    }
                    else
                    {
                        if (df1.Valor != df1.Valor)
                        {
                            AgregaDiferencia(obj, "En el campo " + c1.nombre + " la propiedad default no coinciden " + df1.Valor + ", " + df2.Valor, 2);
                        }
                    }
                }
                if (encontrado == false)
                {
                    //no se encontro en la tabla
                    AgregaDiferencia(obj, "El campo " + c1.nombre.Trim() + " no existe en la tabla destino ", 1);
                }
            }
            //ahora reviso las claves primarias
            l1 = DB.DameLLavesPrimarias(obj.Nombre);
            l2 = DB2.DameLLavesPrimarias(obj2.Nombre);
            if (l1.Count != l2.Count)
            {
                //son diferentes
                AgregaDiferencia(obj, "No coinciden la cantidad de campos de llaves primarias", 2);
                return;
            }
        }