原創(chuàng)|使用教程|編輯:王香|2018-07-18 16:11:47.000|閱讀 455 次
概述:如何使用自定義應(yīng)用程序中的代碼在FastCube.Net中創(chuàng)建多維數(shù)據(jù)集
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
在本文中,將介紹如何使用自定義應(yīng)用程序中的代碼在FastCube.Net中創(chuàng)建多維數(shù)據(jù)集。多維數(shù)據(jù)集文件可以包含數(shù)據(jù),讓我們看一下多維數(shù)據(jù)集創(chuàng)建的整個(gè)步驟。
下載最新版FastCube.Net
創(chuàng)建Windows窗體項(xiàng)目,在“References”中,需要添加指向libraries(庫)的鏈接:FastReport,F(xiàn)astReport.Bars,F(xiàn)astReport.Olap。 從工具欄中將以下控件添加到窗體: dataSource,dtDataSet,cube,slice,sliceGrid,button。
在dataSource1屬性中,找到DataSet并為其選擇可用的dtDataSet1。在cube1控件的屬性中,為DataSource選擇值dataSource1。對(duì)于SoutceType屬性,值為DataSource;在slice1屬性中,選擇Cube屬性的cube1值。調(diào)整sliceGrid1的大小,在其屬性中,選擇Slice的slice1值。
現(xiàn)在轉(zhuǎn)到Form(表單)代碼,首先,讓我們將libraries(庫)添加到Using部分:
using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Windows.Forms; using FastReport.Olap.Slice;
將以下變量和對(duì)象添加到類中:
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
用假數(shù)據(jù)填充表格,只是為了證明軟件數(shù)據(jù)生成的可能性。除DataTable外,還可以使用數(shù)據(jù)庫或流來檢索數(shù)據(jù)。
創(chuàng)建一個(gè)DataTable并用隨機(jī)數(shù)據(jù)填充它:
// 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 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; }
現(xiàn)在用一個(gè)數(shù)據(jù)源,用戶可以使用數(shù)據(jù)庫中的表或視圖或數(shù)據(jù)流,向切片添加字段。
為表單上的唯一按鈕創(chuàng)建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(); dataTable = 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"); }
尺寸和度量存儲(chǔ)在單獨(dú)的容器中。首先,用尺寸填充YAxisContainer,在XAxisContainer中添加了一個(gè)空的度量列表。然后才開始用措施填補(bǔ)它。MeasureField類的構(gòu)造函數(shù)的signature:public MeasureField(Slice slice,AggregateFunction aggregateFunction,SliceField baseSliceField,SliceField distinctSliceField,SliceField extraSliceField,string name,string caption,bool distinct);在代碼的最后一行,將多維數(shù)據(jù)集存儲(chǔ)在指定的文件中。
現(xiàn)在啟動(dòng)應(yīng)用程序并使用按鈕創(chuàng)建一個(gè)新的多維數(shù)據(jù)集:
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn