在此项目中,我们通过VB.NET中的Microsoft.AnalysisServices动态创建多维多维数据集。该代码已经使用了几年,现在我们需要进行修改。
我们添加一个带有字段D1的事实表。 然后,我们添加各种主表,包括D1和关系。因此,我们以编程方式为D1添加关系,例如:
DataSourceView.Schema.Relations.Add(pkColumn, fkColumn)
我们添加维D1并定义键/名称:
Private Function GenerateAttributeDimensionGeneric(ByVal objDatabase As Database, ByVal objDataSourceView As DataSourceView) As Object
Dim objDimension As New Dimension()
objDimension = objDatabase.Dimensions.Add("D1")
objDimension.Source = New DataSourceViewBinding(objDataSourceView.ID)
Dim objDimensionAttributesColl As DimensionAttributeCollection = objDimension.Attributes
Dim objAttribute As DimensionAttribute = objDimensionAttributesColl.Add("D1_PK")
objAttribute.Usage = AttributeUsage.Key
objAttribute.KeyColumns.Add("D1", "D1_PK", OleDbType.[Integer])
objAttribute.NameColumn = New DataItem("D1", "AttributeValueName")
这很花哨。现在,我们被要求在D1上添加自定义排序选项。因此,我们向架构添加了一个新字段(iOrder),并更改了导入,以将其包括在D1表中。
使用上面的代码片段添加Dimension D1时,我试图告诉它使用iOrder。
objAttribute.AttributeRelationships.Add("iOrder")
objAttribute.OrderBy = OrderBy.AttributeName
objAttribute.OrderByAttribute.Name = "iOrder"
最后一行之后,我出现了错误。
对象引用未设置为对象的实例。
有人对使用C#/ VB.NET进行自定义排序有任何想法或示例吗?是利用this来带我走这么远。