Exemple #1
0
        public bool Accept()
        {
            try
            {
                if (this.uxMainTable.HasValidationError)
                {
                    return(false);
                }

                foreach (TreeViewItemTool item in this.treeTableItems.Where(ch => ch.IsChecked))
                {
                    DataSourceTableModel sourceTable = new DataSourceTableModel
                    {
                        MasterReport_Id = this.MainTable.MasterReport_Id,
                        TableName       = item.Header.ParseToString(),
                        IsAvailable     = true
                    };

                    this.MainTable.SelectedSourceTables.Add(sourceTable);
                }

                return(true);
            }
            catch (Exception err)
            {
                MessageBox.Show(err.InnerExceptionMessage());

                return(false);
            }
        }
        /// <summary>
        ///		Obtiene la cadena SQL asociada a una tabla
        /// </summary>
        private string GetSql(DataSourceTableModel dataSourceTable)
        {
            string fields = string.Empty;
            int    charsFromLastNewLine = 0, index = 0;

            // Añade las columnas
            foreach (DataSourceColumnModel column in dataSourceTable.Columns.EnumerateValuesSorted())
            {
                // Cuenta el número de caracteres
                charsFromLastNewLine += dataSourceTable.Table.Length + column.Id.Length + 2;
                // Añade el nombre de columna
                fields += $"[{dataSourceTable.Table}].[{column.Id}]";
                // Añade la coma si es necesario
                if (index++ < dataSourceTable.Columns.Count - 1)
                {
                    fields += ", ";
                }
                // Añade un salto de línea si es necesario
                if (charsFromLastNewLine > 80)
                {
                    // Añade el salto de línea
                    fields += Environment.NewLine + "\t\t";
                    // Inicializa el contador
                    charsFromLastNewLine = 0;
                }
            }
            // Devuelve la cadena SQL
            return($"SELECT {fields} {Environment.NewLine}\tFROM [{dataSourceTable.Schema}].[{dataSourceTable.Table}]");
        }
Exemple #3
0
 public DataSourceTableViewModel(ReportingSolutionViewModel reportingSolutionViewModel, DataSourceTableModel dataSource)
 {
     // Inicializa los objetos
     ReportingSolutionViewModel = reportingSolutionViewModel;
     DataSource = dataSource;
     // Inicializa las propiedades
     InitViewModel();
 }
        /// <summary>
        ///		Crea un origen de datos de tabla
        /// </summary>
        private void CreateDataSource(int dataSourceId, DataSourceTableModel dataSourceTable, ref int columnId)
        {
            // Inserta el origen de datos en la lista
            DataBaseIds.Add(("DataSource", dataSourceTable.FullName, dataSourceId, null));
            // Crea el registro de origen de datos tabla
            Builder.AppendLine($@"INSERT INTO DataSources (DataSourceId, [Schema], [Table], Sql)
									VALUES ({dataSourceId}, {Convert(dataSourceTable.Schema)}, {Convert(dataSourceTable.Table)}, NULL);"                                    );
            // Crea las columnas
            CreateDataSourceColumns(dataSourceId, dataSourceTable.Columns, ref columnId);
        }
        /// <summary>
        ///		Obtiene el nodo de un origen de datos
        /// </summary>
        private MLNode GetNodeDataSourceTable(DataSourceTableModel dataSource)
        {
            MLNode nodeML = new MLNode(TagDataSourceTable);

            // Asigna las propiedades
            nodeML.Attributes.Add(TagId, dataSource.FullName);
            nodeML.Attributes.Add(TagSchema, dataSource.Schema);
            nodeML.Attributes.Add(TagTable, dataSource.Table);
            // Añade las columnas visibles
            nodeML.Nodes.AddRange(GetNodesColumns(dataSource.Columns));
            // Devuelve el nodo
            return(nodeML);
        }
        /// <summary>
        ///		Obtiene un origen de datos para una tabla
        /// </summary>
        private DataSourceTableModel LoadDataSourceTable(DataWarehouseModel dataWarehouse, MLNode rootML)
        {
            DataSourceTableModel dataSource = new DataSourceTableModel(dataWarehouse);

            // Asigna el esquema y la tabla
            dataSource.Schema = rootML.Attributes[TagSchema].Value.TrimIgnoreNull();
            dataSource.Table  = rootML.Attributes[TagTable].Value.TrimIgnoreNull();
            // El Id del origen de datos es el nombre completo de la tabla
            dataSource.Id = dataSource.FullName;
            // Carga las columnas
            foreach (MLNode nodeML in rootML.Nodes)
            {
                if (nodeML.Name == TagColumn)
                {
                    dataSource.Columns.Add(LoadColumn(dataSource, nodeML));
                }
            }
            // Devuelve el origen de datos
            return(dataSource);
        }
        public void UpdateDataSourceTable(DataSourceTableModel model)
        {
            DataSourceTable existing = this.dataContext
                                       .DataSourceTables
                                       .Where(rx => rx.MasterReport_Id == model.MasterReport_Id && rx.TableName == model.TableName)
                                       .FirstOrDefault();

            if (existing == null)
            {
                existing = model.CopyToObject(new DataSourceTable()) as DataSourceTable;

                this.dataContext.DataSourceTables.Add(existing);
            }
            else
            {
                existing = model.CopyToObject(existing) as DataSourceTable;
            }

            this.dataContext.SaveChanges();

            model = existing.CopyToObject(model) as DataSourceTableModel;
        }
        /// <summary>
        ///		Convierte una tabla de base de datos en un esquema
        /// </summary>
        private DataSourceTableModel ConvertDataSource(DataWarehouseModel dataWarehouse, BaseTableDbModel table)
        {
            DataSourceTableModel dataSource = new DataSourceTableModel(dataWarehouse);

            // Asigna los datos
            dataSource.Schema = table.Schema;
            dataSource.Table  = table.Name;
            // Asigna las columnas
            foreach (FieldDbModel field in table.Fields)
            {
                DataSourceColumnModel column = new DataSourceColumnModel(dataSource);

                // Asigna las propiedades
                column.Id           = field.Name;
                column.IsPrimaryKey = field.IsKey;
                column.Type         = Convert(field.Type);
                column.Required     = field.IsRequired;
                // Añade la columna
                dataSource.Columns.Add(column);
            }
            // Devuelve el origen de datos
            return(dataSource);
        }