加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

vb.net – MDX Query在报表中返回值,但在Visual Basic代码中不返

发布时间:2020-12-17 00:19:05 所属栏目:大数据 来源:网络整理
导读:这适用于为报表动态设置数据和呈现报表的应用程序. 我有一个依赖于参数的报告的MDX查询.查询是: SELECT NULL ON COLUMNS,strtomember(@DateYear) ON ROWS FROM [MYDATACUBE] 在报表查询设计器中运行它时,它会正确返回一个值.但是,在Visual Basic代码中运行
这适用于为报表动态设置数据和呈现报表的应用程序.

我有一个依赖于参数的报告的MDX查询.查询是:

SELECT NULL ON COLUMNS,strtomember(@DateYear) ON ROWS FROM [MYDATACUBE]

在报表查询设计器中运行它时,它会正确返回一个值.但是,在Visual Basic代码中运行它时,它什么都不返回.这是我的代码的重要部分:

Dim cn = New AdomdConnection(adomdparamconnectionstrings(countparamsadomd))
    Dim da As AdomdDataAdapter = New AdomdDataAdapter()
    Dim cmd = New AdomdCommand(paramcommands(countparamsadomd),cn)
    Dim tbl = New DataTable

    If (adomdparams) Then 'If there are parameters,adds them to the query
        For l As Integer = 0 To (countparamsadomd - 1)
            If (adomdparamconnectionstrings(l) = "NODATASET") Then
                Dim p As New AdomdParameter(paramvaradomd(l),paramadomd(l))
                cmd.Parameters.Add(p)
            Else
                Dim p As New AdomdParameter(paramvaradomd(l),adomdqueryvalues(l))
                cmd.Parameters.Add(p)
            End If
        Next
    End If

    da.SelectCommand = cmd

    cn.Open()
    da.Fill(tbl)
    cn.Close()

我知道连接字符串有效,因为所有其他数据集都使用相同的数据集.我知道命令是正确的使用断点.我知道参数的值也正确使用断点.我知道代码总体上有效,因为它适用于我测试过的每个数据集,除了这个.使用断点,一切似乎都像其他数据集一样工作,但它只是不返回任何值.

由此产生的表确实具有正确命名的列([Date].[Year].[Year].[MEMBER_CAPTION])但没有行.返回的值应该是包含年份的单行.

我在C#中做过类似的事情.

如果您有权访问维度和层次结构名称,那么您可以使用如下通用查询:

WITH
    MEMBER [Measures].[Member Caption] AS StrToMember(@Hierarchy).HIERARCHY.CURRENTMEMBER.MEMBER_CAPTION
SELECT 
    [Measures].[Member Caption] ON COLUMNS,StrToMember(@DateYear) ON ROWS
FROM 
    [MYDATACUBE]

请注意,在执行查询之前,您必须将参数@Hierarchy添加到命令中.计算成员的值表达式中有一个小技巧.将层次结构表达式传递给StrToMember()时,它将返回该层次结构中的默认成员.从默认成员,您可以使用HIERARCHY函数向后工作以获取层次结构.从层次结构中,您可以获取CURRENTMEMBER及其MEMBER_CAPTION属性.

如果您希望在示例中使用特定于层次结构的查询,则可以使用:

WITH
    MEMBER [Measures].[Member Caption] AS [Date].[Year].CURRENTMEMBER.MEMBER_CAPTION
SELECT 
    [Measures].[Member Caption] ON COLUMNS,StrToMember(@DateYear) ON ROWS
FROM 
    [MYDATACUBE]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读