2011-02-10 17 views
2

下午所有。以编程方式添加Adomd参数C#

我正在构建一个web应用程序,我试图从SSAS多维数据集中获取一些数据。

我有以下MDX我想在C#中,但与添加几个参数即,两个parameteres,一个用于公司123,另一个位置1复制:

@"SELECT NON EMPTY([Dim Unit].[All Units].[Category Group Name]) ON COLUMNS 
        FROM [Info] 
        WHERE ([Dim Company].[All Companies].&[123], 
        [Dim Location].[All Locations].&[123]&[1])"; 

现在,我可以让它启动并用一个参数运行:

AdomdCommand cmdPDC = conPDC.CreateCommand(); 
     cmdPDC.CommandText = "SELECT [Dim Unit].[All Units].[Category Group Name].Members ON 0 FROM [Info] WHERE (StrToMember(@P1)"; 

     string companyid = "123"; 

     string sP1 = "[Dim Company].&" + company; 

    cmdPDC.Parameters.Add(new AdomdParameter("P1", sP1)); 

但我怎么然后实现第二个参数,例如,如果我想在的位置,坚持一个参数?我在想沿着线ofbelow,但我不能让小草皮的工作:

AdomdCommand cmdPDC = conPDC.CreateCommand(); 
     cmdPDC.CommandText = "SELECT [Dim Unit].[All Units].[Category Group Name].Members ON 0 FROM [Info] WHERE (StrToMember(@P1)," + "(StrToMember(@P2))"; 

     string companyid = "123"; 
     string locationid = "1"; 

     string sP1 = "[Dim Company].&" + company; 
     string sP2 = "[Dim Location].&" + company + "&" + location; 

     cmdPDC.Parameters.Add(new AdomdParameter("P1", sP1)); 
     cmdPDC.Parameters.Add(new AdomdParameter("P2", sP2)); 

任何帮助或建议感激地接受。

回答

3

解决方案!

AdomdCommand cmdPDC = conPDC.CreateCommand(); 
cmdPDC.CommandText = "SELECT NON EMPTY [Dim Unit].[All Units].[Category Name].Members ON 0 FROM [MY CUBE] WHERE (StrToMember(@CompanyId),StrToMember(@LocationId))"; 

string companyid = "[123]"; 
string locationid = "[1]"; 

string sCompanyId = "[Dim Company].&" + companyid; 
string sLocationId = "[Dim Location].&" + companyid + "&" + locationid; 

cmdPDC.Parameters.Add(new AdomdParameter("CompanyId", sCompanyId)); 
cmdPDC.Parameters.Add(new AdomdParameter("LocationId", sLocationId)); 

和几个小指针。

您可能会收到此错误:

“X参数无法得到解决,因为它是在一个内部子表达式引用”

分辨率:当引用字符串中插入@CompanyId,确保参数不包含在撇号(')中 - c#很聪明,会转换数据类型并为您添加这些撇号。但是,您将无法在观察窗口中看到它,并且所有内容看起来都没问题。

所有项目都会返回,看起来您的参数将被忽略。

分辨率:请检查第一个SELECT并确保它是SELECT NON EMPTY

+0

我们可以使用参数名称,如@ [DepartmentMaster]。[DepartmentMaster]。&[1]? – Mukund 2015-04-01 13:30:01

0
SELECT NON EMPTY { 
[Measures].[Phone Count], 
[Measures].[Mail Count], 
[Measures].[Individual Count] 
} ON COLUMNS 
FROM [PyramidReports-US] 
WHERE ( 
(STRTOSET(@PoliticalGeographyByCD), 
[Political Geography].[By CD].[State].currentmember), 
(STRTOSET(@GenderGender), 
[Gender].[Gender].currentmember), 
(STRTOSET(@ModelAffinityAffinityQuartile), 
[Model Affinity].[Affinity Quartile].currentmember 
) 

对于像这样的查询使用currentmember填充参数如何?