Example #1
0
        /// <summary>
        /// Inserta en el documento de Word los procedimientos almacesados.
        /// </summary>
        /// <param name="model">Base de datos como TSqlModel.</param>
        /// <param name="allExtProperties">Todas las propiedades de extensión de la base de datos.</param>
        private void InsertStoredProcedures(TSqlModel model, IEnumerable <TSqlObject> allExtProperties)
        {
            // Busca en el documento la sección "Procedimientos", que tiene un marcador también así llamado.
            // Es donde se deben añadir todos los  correspondientes al modelo de datos.
            Word.Range range = this.Bookmarks["Procedimientos"].Range.Next();

            var records = new List <DocObject>();

            // Obtener todas las tablas de la base de datos.
            var allProcedures = model.GetObjects(DacQueryScopes.All, ModelSchema.Procedure);

            foreach (var proc in allProcedures) // Leer todas las tablas del modelo de datos.
            {
                string procSchema = proc.Name.Parts.First();

                // Nuevo registro de la tabla.
                var acDocObject = new DocObject
                {
                    Name = proc.Name.Parts.Last(),
                    Type = DBObject.Table
                };

                var procExtProperties = allExtProperties.Where(f => f.Name.ToString().Contains(acDocObject.Name));
                acDocObject.Description = GetExtPropertyDescription(new List <string>()
                {
                    "SqlProcedure", procSchema, acDocObject.Name
                }, procExtProperties);

                foreach (var parameter in proc.GetChildren().Where(child => child.ObjectType.Name == "Parameter"))
                {
                    var dataType      = parameter.GetReferenced(Parameter.DataType).First(); // Obtiene el tipo del parametro.
                    var parameterName = parameter.Name.Parts.Last();

                    // Guarda la información del parámetro.
                    acDocObject.Columns.Add(new Tuple <bool, string, string, string>(
                                                false,
                                                parameterName,                           // Nombre del parámetro.
                                                dataType?.Name.Parts[0].ToUpper() ?? "", // Tipo del parámetro.
                                                GetExtPropertyDescription(new List <string>()
                    {
                        "SqlSubroutineParameter", procSchema, acDocObject.Name, parameterName
                    }, allExtProperties)));
                }

                records.Add(acDocObject);
            }

            // Crea la tabla en base a la información obtenida desde la base de datos.
            range = PrintRecords(records, range);
            CommitRange(range);
            InsertSpace(range);
        }
Example #2
0
        /// <summary>
        /// Inserta en el documento de Word las funciones indicadas.
        /// </summary>
        /// <param name="range">Rango del documento.</param>
        /// <param name="model">Base de datos como TSqlModel.</param>
        /// <param name="functions">Todas las funciones como enumerable de objetos TSqlObject.</param>
        /// <param name="allExtProperties">Todas las propiedades de extensión de la base de datos.</param>
        public void InsertFunctionType(Word.Range range, IEnumerable <TSqlObject> functions, IEnumerable <TSqlObject> allExtProperties)
        {
            var records = new List <DocObject>();

            foreach (var function in functions) // Leer todas las funciones del modelo de datos.
            {
                string functionSchema = function.Name.Parts.First();

                // Nuevo registro de la tabla.
                var acDocObject = new DocObject
                {
                    Name = function.Name.Parts.Last(),
                    Type = DBObject.Function
                };

                var allFunctions = allExtProperties.Where(f => f.Name.ToString().Contains(acDocObject.Name));

                // Propiedades de extensión para la función.
                var functionExtProperty = allExtProperties.Where(f => f.Name.ToString().Contains(acDocObject.Name));
                acDocObject.Description = GetExtPropertyDescription(new List <string>()
                {
                    "SqlSubroutineParameter", functionSchema, acDocObject.Name
                }, functionExtProperty);

                foreach (var parameter in function.GetChildren().Where(child => child.ObjectType.Name == "Parameter"))
                {
                    // Tipo del campo.
                    var parameterType = parameter.GetReferenced(Parameter.DataType).Any() ? parameter.GetReferenced(Parameter.DataType).First() : null;
                    var parameterName = parameter.Name.Parts.Last();

                    // Guarda la información del parámetro.
                    acDocObject.Columns.Add(new Tuple <bool, string, string, string>(
                                                false,
                                                parameterName,                                // Nombre del campo.
                                                parameterType?.Name.Parts[0].ToUpper() ?? "", // Tipo del campo.
                                                GetExtPropertyDescription(new List <string>()
                    {
                        "SqlSubroutineParameter", functionSchema, acDocObject.Name, parameterName
                    }, allExtProperties)));
                }

                records.Add(acDocObject);
            }

            // Crea la tabla en base a la información obtenida desde la base de datos.
            range = PrintRecords(records, range);
            CommitRange(range);
            InsertSpace(range);
        }
Example #3
0
        /// <summary>
        /// Inserta en el documento de Word las tablas de la base de datos.
        /// </summary>
        /// <param name="model">Base de datos como TSqlModel.</param>
        /// <param name="allExtProperties">Todas las propiedades de extensión de la base de datos.</param>
        private void InsertTables(TSqlModel model, IEnumerable <TSqlObject> allExtProperties)
        {
            // Busca en el documento la sección "Tablas", que tiene un marcador también así llamado.
            // Es donde se deben añadir todas las tablas correspondientes al modelo de datos.
            Word.Range range = this.Bookmarks["Tablas"].Range.Next();

            var records = new List <DocObject>();

            // Obtiene todas las tablas de la base de datos.
            var allDbTables = model.GetObjects(DacQueryScopes.All, ModelSchema.Table);

            foreach (var table in allDbTables) // Leer todas las tablas del modelo de datos.
            {
                string tableSchema = table.Name.Parts.First();

                // Incluye solo aquellas tablas que pertenecen al esquema "dbo".
                if (tableSchema != "dbo")
                {
                    continue;
                }

                // Nuevo registro de la tabla.
                var acDocObject = new DocObject
                {
                    Name = table.Name.Parts.Last(),
                    Type = DBObject.Table
                };

                // Propiedades de extensión para la tabla.
                var tableExtProperty = allExtProperties.Where(f => f.Name.ToString().Contains(acDocObject.Name));
                acDocObject.Description = GetExtPropertyDescription(new List <string>()
                {
                    "SqlTableBase", tableSchema, acDocObject.Name
                }, tableExtProperty);

                foreach (var column in table.GetChildren().Where(child => child.ObjectType.Name == "Column"))
                {
                    // Restricción de clave primaria.
                    var pkConstraint = column.GetReferencing(PrimaryKeyConstraint.Columns, DacQueryScopes.UserDefined);

                    // Tipo del campo.
                    var fieldType = column.GetReferenced(Column.DataType).Any() ? column.GetReferenced(Column.DataType).First() : null;
                    var fieldName = column.Name.Parts.Last();

                    // Guarda la información del campo.
                    acDocObject.Columns.Add(new Tuple <bool, string, string, string>(
                                                pkConstraint.Any(),                       // Es clave primaria o no.
                                                fieldName,                                // Nombre del campo.
                                                fieldType?.Name.Parts[0].ToUpper() ?? "", // Tipo del campo.
                                                GetExtPropertyDescription(new List <string>()
                    {
                        "SqlColumn", tableSchema, acDocObject.Name, fieldName
                    }, tableExtProperty)));
                }

                records.Add(acDocObject);
            }

            // Crea la tabla en base a la información obtenida desde la base de datos.
            range = PrintRecords(records, range, true);
            CommitRange(range);
            InsertSpace(range);
        }