2015-06-05 4 views
0

У меня есть куб olap, к которому я хочу получить доступ. Я пытаюсь выполнить запрос mdx. вот мой простой тест программы:Неверный синтаксис OLAP-кода рядом с ключевым словом ON

 static void Main(string[] args) 
    { 
     using (OleDbConnection cn = new OleDbConnection()) 
     { 

      cn.ConnectionString = "secret"; 

      cn.Open(); 

      string MDX = "SELECT [Measures].[Amount] "+ " ON ROWS, " + "[Dim Client].[Common Client Name].&[test Name] "+ " ON COLUMNS " + "from [CubeName];"; 

      OleDbCommand command = new OleDbCommand(MDX, cn); 
      System.Data.DataSet ds = new System.Data.DataSet(); 
      OleDbDataAdapter adp = new OleDbDataAdapter(command); 
      adp.Fill(ds); 
      Console.WriteLine(ds.Tables[0].Rows[0][1]); 

     } 
    } 

Я постоянно получаю следующее сообщение об ошибке: Incorrect syntax near the keyword 'ON'. и я не могу понять, что я делаю неправильно. Если я выполняю тот же запрос непосредственно из студии управления, ответ куба без ошибок.

+1

Вы пытались добавить 'MessageBox.Show (MDX)' после 'string MDX = ....' и проверить, что он держит? – SouravA

ответ

0

В режиме отладки, скопируйте запрос внутри строки кавычки «»

0

Try без сцеплений и, возможно, использовать индексные номера осей, а также, если вы не используете подпись членов, то нет необходимости включать амперсанд:

string MDX = "SELECT [Measures].[Amount] ON 0, [Dim Client].[Common Client Name].[test Name] ON 1 FROM[CubeName];"; 

Выполняет ли это mdx ОК в SSMS?

Смежные вопросы