0

我正在使用一个大型 OLAP 多维数据集,并且正在构建非常基本的搜索功能来帮助我解析大量数据(约 30 个事实表、30 个维度以及计算度量),但我遇到了一个有趣的问题。当我访问CubeField.Name事实表成员或计算度量的属性时,它会通过[Measures].[FieldName]而不是将我指向正确的事实表/计算度量文件夹。
这是我正在使用的代码:

Sub X()

    Dim pvtTable As PivotTable
    Dim oCubeField As CubeField

    Set pvtTable = ActiveSheet.PivotTables(1)
    For Each oCubeField In pvtTable.CubeFields
        If InStr(LCase(oCubeField.Name), "spread") > 0 Then
            Debug.Print oCubeField.Parent & ": " & oCubeField.Name
        End If

    Next

End Sub

关于如何实际获得事实表名称的任何想法?还是计算度量的文件夹结构?谢谢!

4

2 回答 2

0

试试oCubeField.Value吧。CubeField 对象的引用说:

Name 返回一个表示对象名称的字符串值。

Value 返回一个字符串值,表示指定字段的名称。

于 2012-12-05T04:22:02.383 回答
0

不幸的是,您不能这样做,因为度量表达式可能链接到几个事实表。

但是您可以使用 OpenSchema() 函数查询和分析多维数据集元数据。

像这样的东西:

Sub GetMeasuresList()
    Const adSchemaMeasures = 36

    Set ADOCon = ActiveCell.PivotTable.PivotCache.ADOConnection

    Set RecSet = ADOCon.OpenSchema(adSchemaMeasures)

    While Not RecSet.EOF
        Debug.Print RecSet!MEASURE_NAME & ": " & RecSet!EXPRESSION
        RecSet.MoveNext
    Wend

End Sub

用于 OLAP 模式行集的 OLE DB

如何在 Visual Basic 中使用 ADO OpenSchema 方法

于 2019-05-30T13:02:02.357 回答