如何在FastCube.Net中创建新的多维数据集
在本文中,将介绍如何使用自定义应用程序中的代码在FastCube.Net中创建多维数据集。多维数据集文件可以包含数据,让我们看一下多维数据集创建的整个步骤。
下载最新版FastCube.Net
创建Windows窗体项目,在“References”中,需要添加指向libraries(库)的链接:FastReport,FastReport.Bars,FastReport.Olap。 从工具栏中将以下控件添加到窗体: dataSource,dtDataSet,cube,slice,sliceGrid,button。
在dataSource1属性中,找到DataSet并为其选择可用的dtDataSet1。在cube1控件的属性中,为DataSource选择值dataSource1。对于SoutceType属性,值为DataSource;在slice1属性中,选择Cube属性的cube1值。调整sliceGrid1的大小,在其属性中,选择Slice的slice1值。
现在转到Form(表单)代码,首先,让我们将libraries(库)添加到Using部分:
using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Windows.Forms; using FastReport.Olap.Slice;
将以下变量和对象添加到类中:
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; //symbol set private Random rnd = new Random(); //randomizer private DataTable dataTable = null; //data table object private int Dims = 4; //dimensions count private int Uniques = 500; //count of unique random values private int Measures = 4; //measures count private int Records = 10000; //table records count
用假数据填充表格,只是为了证明软件数据生成的可能性。除DataTable外,还可以使用数据库或流来检索数据。
创建一个DataTable并用随机数据填充它:
// The method of a random string generation private string GetNewStr(int len) { len = 1 + rnd.Next(len - 1); char[] resChars = new char[len]; for (int i = 0; i < resChars.Length; i++) { resChars[i] = chars[rnd.Next(chars.Length)]; } return new string(resChars); } // The method of adding fields to a table private DataTable CreateDS() { DataTable dt = new DataTable("Test"); for (int i = 0; i < Dims; i++) dt.Columns.Add("Dimension" + (i + 1), typeof(string)); for (int i = 0; i < Measures; i++) dt.Columns.Add("Measure" + (i + 1), typeof(int)); return dt; } // Method of filling the table with data private DataTable BuildDS() { DataTable dt = CreateDS(); int maxUniques = Uniques; SortedSet<string> randomStrings = new SortedSet<string>(); // Generating Unique Values while (randomStrings.Count < maxUniques) { randomStrings.Add(GetNewStr(10)); } int dimCount = Dims; int mesCount = Measures; object[] values = new object[dimCount + mesCount]; // Filling a table with data for (int i = 0; i < Records; i++) { for (int 5b4 j = 0; j < dimCount; j++) { if (i < maxUniques) values[j] = randomStrings.ElementAt(i); else values[j] = randomStrings.ElementAt(rnd.Next(dimCount)); } for (int j = 0; j < mesCount; j++) { values[j + dimCount] = rnd.Next(255); } dt.Rows.Add(values); } return dt; }
现在用一个数据源,用户可以使用数据库中的表或视图或数据流,向切片添加字段。
为表单上的唯一按钮创建OnClick事件处理程序,并编写以下代码:
private void button1_Click(object sender, EventArgs e) { // Add the generated table with the data in the DataSet cube1.Close(); DataTable dt = BuildDS(); if (dataTable != null) { dataTable.Dispose(); data 111c Table = null; } dataTable = dt; dtDataSet1.DataTable = dataTable; dataSource1.DeleteFields(); cube1.Open(); dtDataSet1.DataTable = null; //Update slice slice1.BeginUpdate(); //Add fields into the containers for (int i = 0; i < Dims; i++) { slice1.YAxisContainer.AddSliceField(slice1.SliceFields.GetFieldByIndex(i)); } //Add empty measures container onto X-axis slice1.XAxisContainer.AddMeasuresField(); //Add measures into the measures container for (int i = 0; i < Measures; i++) { slice1.MeasuresContainer.AddMeasure(new MeasureField( slice1, FastReport.Olap.Types.AggregateFunction.Sum, slice1.SliceFields.GetFieldByIndex(i + Dims), null, null, "Measure" + (i + 1), "Measure" + (i + 1), false )); } slice1.EndUpdate(); //Save cube into a file cube1.Save("J:/Program Files (x86)/FastReports/FastCube.Net Professional/Demos/C#/test.mdc"); }
尺寸和度量存储在单独的容器中。首先,用尺寸填充YAxisContainer,在XAxisContainer中添加了一个空的度量列表。然后才开始用措施填补它。MeasureField类的构造函数的signature:public MeasureField(Slice slice,AggregateFunction aggregateFunction,SliceField baseSliceField,SliceField distinctSliceField,SliceField extraSliceField,string name,string caption,bool distinct);在代码的最后一行,将多维数据集存储在指定的文件中。
现在启动应用程序并使用按钮创建一个新的多维数据集:
- 如何从报表脚本FastReport .Net在矩阵中创建计算字段
- 如何制作一个简单的FastCube.Net多维编辑器
- asp.net 动态创建TextBox控件 如何加载状态信息
- 如何以PDF/A格式导出FastReport.Net报表
- 如何创建本地密钥对,并添加到Coding.net上
- web developer tips (61):如何创建Asp.net Dynamic Data网站
- ASP.NET Web API的Controller是如何被创建的?
- ASP.net mvc开发中使用纯html如何创建FCKeditor编辑器的使用
- net4.0创建asp.net empty web application如何发布(英文)
- 如何在FastReport.Net中调用自定义的数据源
- 如何创建一个自定义帐户来运行 ASP.NET
- 如何使用 ADO.NET 和 Visual C# .NET 以编程方式创建 SQL Server 数据库
- 从FastReport.NET导出文件时,如何配置Acrobat PDF阅览器选项
- 如何将FastReport .net 添加到VS2015工具箱中
- asp.net如何使用cookie(创建、保存、读取)
- web developer tips (61):如何创建Asp.net Dynamic Data网站
- 如何用VB.Net创建一个三层的数据库应用程序
- 详解ASP.NET中如何创建GeoRSS订阅源
- 如何:为 ASP.NET 网站创建资源文件 (Visual Studio)
- VS2008 Tips #008 如何创建ASP.NET Web 用户控件并包含在Web 页面中