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;
            }
        }