/// <summary>
        ///		Obtiene un origen de datos para una consulta SQL
        /// </summary>
        private DataSourceSqlModel LoadDataSourceSql(DataWarehouseModel dataWarehouse, MLNode rootML)
        {
            DataSourceSqlModel dataSource = new DataSourceSqlModel(dataWarehouse);

            // Carga las propiedades
            dataSource.Id = rootML.Attributes[TagId].Value.TrimIgnoreNull();
            // Asigna la base de datos y la cadena SQL
            dataSource.Sql = rootML.Nodes[TagSql].Value.TrimIgnoreNull();
            // Carga las columnas
            foreach (MLNode nodeML in rootML.Nodes)
            {
                if (nodeML.Name == TagColumn)
                {
                    dataSource.Columns.Add(LoadColumn(dataSource, nodeML));
                }
            }
            // Carga los parámetros de consulta
            foreach (MLNode nodeML in rootML.Nodes)
            {
                if (nodeML.Name == TagParameter)
                {
                    dataSource.Parameters.Add(LoadParameter(nodeML));
                }
            }
            // Devuelve el origen de datos
            return(dataSource);
        }
Exemple #2
0
 public DataSourceSqlViewModel(ReportingSolutionViewModel reportingSolutionViewModel, DataSourceSqlModel dataSource)
 {
     // Inicializa los objetos
     ReportingSolutionViewModel = reportingSolutionViewModel;
     DataSource = dataSource;
     // Inicializa las propiedades
     InitViewModel();
 }
 /// <summary>
 ///		Borra un origen de datos de SQL
 /// </summary>
 private void DeleteDataSourceSql(DataSourceSqlModel dataSource)
 {
     if (ReportingSolutionViewModel.SolutionViewModel.MainController.SystemController.ShowQuestion($"¿Realmente desea borrar los datos del origen de datos {dataSource.Id}?"))
     {
         // Borra el origen de datos
         dataSource.DataWarehouse.DataSources.Remove(dataSource);
         // Graba la solución y actualiza el árbol
         SaveDataWarehouse(dataSource.DataWarehouse);
     }
 }
        /// <summary>
        ///		Crea un origen de datos de SQL
        /// </summary>
        private void CreateDataSource(int dataSourceId, DataSourceSqlModel dataSourceSql, ref int columnId, ref int parameterId)
        {
            // Inserta el origen de datos en la lista
            DataBaseIds.Add(("DataSource", dataSourceSql.Id, dataSourceId, null));
            // Crea el registro de origen de datos SQL
            Builder.AppendLine($@"INSERT INTO DataSources (DataSourceId, [Schema], [Table], Sql)
									VALUES ({dataSourceId}, NULL, {Convert(dataSourceSql.Id)}, {Convert(dataSourceSql.Sql)});"                                    );
            // Crea las columnas
            CreateDataSourceColumns(dataSourceId, dataSourceSql.Columns, ref columnId);
            // Crea los parámetros
            CreateDataSourceParameters(dataSourceId, dataSourceSql.Parameters, ref parameterId);
        }
 public ListDataSourceParametersViewModel(ReportingSolutionViewModel reportingSolutionViewModel, DataSourceSqlModel dataSource, bool updatable)
 {
     // Asigna las propiedades
     ReportingSolutionViewModel = reportingSolutionViewModel;
     DataSource = dataSource;
     Updatable = updatable;
     // Inicializa el viewModel
     InitViewModel();
     // Asigna los comandos
     NewParameterCommand = new BaseCommand(_ => CreateParameter());
     DeleteParameterCommand = new BaseCommand(_ => DeleteParameter(), _ => SelectedItem != null)
                                 .AddListener(this, nameof(SelectedItem));
 }
        /// <summary>
        ///		Obtiene el nodo de un origen de datos
        /// </summary>
        private MLNode GetNodeDataSourceSql(DataSourceSqlModel dataSource)
        {
            MLNode nodeML = new MLNode(TagDataSourceSql);

            // Asigna las propiedades
            nodeML.Attributes.Add(TagId, dataSource.Id);
            nodeML.Nodes.Add(TagSql, dataSource.Sql);
            // Añade las columnas y los parámetros
            nodeML.Nodes.AddRange(GetNodesColumns(dataSource.Columns));
            nodeML.Nodes.AddRange(GetNodesParameters(dataSource.Parameters));
            // Devuelve el nodo
            return(nodeML);
        }
        /// <summary>
        ///		Abre un origen de datos
        /// </summary>
        private void OpenDataSource(NodeDataSourceViewModel node)
        {
            if (node == null || node.DataSource is DataSourceSqlModel)
            {
                DataSourceSqlModel dataSource = null;

                // Genera el origen de datos
                if (node != null && node.DataSource is DataSourceSqlModel dataSourceSql)
                {
                    dataSource = dataSourceSql;
                }
                else
                {
                    dataSource = new DataSourceSqlModel(GetSelectedDataWarehouse(SelectedNode));
                }
                // Abre la vista
                ReportingSolutionViewModel.SolutionViewModel.MainController.OpenWindow(new DataSources.DataSourceSqlViewModel(ReportingSolutionViewModel, dataSource));
            }
            else if (node.DataSource is DataSourceTableModel dataSourceTable)
            {
                ReportingSolutionViewModel.SolutionViewModel.MainController.OpenWindow(new DataSources.DataSourceTableViewModel(ReportingSolutionViewModel, dataSourceTable));
            }
        }