Пожалуйста, попробуйте этот код:
public object CreateDataSet()
{
var dataset = new DataSet();
dataset.Tables.Add("Categories");
dataset.Tables[0].Columns.Add("ID", typeof(int));
dataset.Tables[0].Columns.Add("Categories", typeof(string));
dataset.Tables[0].Columns.Add("Value", typeof(double));
dataset.Tables.Add("Orders");
dataset.Tables[1].Columns.Add("ID", typeof(int));
dataset.Tables[1].Columns.Add("CategoryID", typeof(int));
dataset.Tables[1].Columns.Add("DateID", typeof(int));
dataset.Tables[1].Columns.Add("Price", typeof(double));
dataset.Tables[1].Columns.Add("Count", typeof(int));
dataset.Tables[1].PrimaryKey = new[] { dataset.Tables["Orders"].Columns["ID"] };
dataset.Relations.Add(new DataRelation("r1", dataset.Tables["Categories"].Columns["ID"], dataset.Tables["Orders"].Columns["CategoryID"]));
dataset.Tables.Add("Dates");
dataset.Tables[2].Columns.Add("ID", typeof(int));
dataset.Tables[2].Columns.Add("Dates", typeof(DateTime));
dataset.Relations.Add(new DataRelation("r2", dataset.Tables["Dates"].Columns["ID"], dataset.Tables["Orders"].Columns["DateID"]));
var r = new Random(10);
for (int i = 0; i < 160; i++)
dataset.Tables[0].Rows.Add(new object[] { i, "Category " + i, r.Next(1, 10) });
for (int i = 0; i < 256; i++)
dataset.Tables[2].Rows.Add(new object[] { i, new DateTime(r.Next(2005, 2010), r.Next(1, 12), r.Next(1, 28)) });
for (int i = 0; i < Int16.MaxValue / 10; i++)
dataset.Tables[1].Rows.Add(new object[] { i, r.Next(0, 16), r.Next(0, 256), r.NextDouble() * 100, r.Next(10) });
return dataset;
}
TOLAPAnalysis Grid;
protected override void Init()
{
Grid = new TOLAPAnalysis();
var dataset = CreateDataSet();
// TOLAPCube init
var olapcube = new TOLAPCube();
Grid.Cube = olapcube;
olapcube.DataSet = dataset;
TCubeEditor.AutoFillCubeStructure(olapcube, "Orders", new string[] { });
// correct measures format
olapcube.Measures.FindByDisplayName("Count").DefaultFormat = "G";
olapcube.Active = true;
// TOLAPAnalysis init layout
Grid.BeginUpdate();
var h = Grid.Dimensions.FindHierarchyByDisplayName("Dates");
Grid.PivotingLast(h, TLayoutArea.laColumn);
h = Grid.Dimensions.FindHierarchyByDisplayName("Categories");
Grid.PivotingLast(h, TLayoutArea.laRow);
var m = Grid.Measures.FindByDisplayName("Count");
m.Visible = true;
Grid.Pivoting(m, TLayoutArea.laRow);
m = Grid.Measures.FindByDisplayName("Price");
m.Visible = true;
Grid.Pivoting(m, TLayoutArea.laRow);
Grid.EndUpdate();
}