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}]"); }
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); }