2013-07-24 71 views
1

我有一個MDX查詢#ERROR(和not null):如何獲得使用DataAdapter /數據集

with member [Measures].[Error Measure] as 1/[Measures].[Non Existing] 
select [Measures].[Error Measure] on 0 from [MyCube] 

其中[措施] [不存在的]不存在MyCube。

如果我試圖在SSMS中執行這個查詢,我會收到一個單元格的cellSet,內容將是#error(並在工具提示中顯式消息)。

在另一方面,如果我創建一個AdomdCommand和執行這個查詢有:

var adapter = new AdomdDataAdapter(command.CommandText, connection); 
var ds = new DataSet(); 
adapter.Fill(ds); 

我不會收到異常和我的數據集將被裝入一個唯一行與一個唯一的列和內容將爲空。我調查了GetColumnError()方法,但沒有指定。

有沒有辦法知道該小區是錯誤的,並不能爲空(不更改到單元集)?

回答

2

我不知道AdomdCommand個解決方案,但內MDX:您可以使用IsError方法這實際上不是一個MDX,但VBA方法:

with member [Measures].[Error Measure] as 1/[Measures].[Non Existing] 
    member [Measures].[Error Indicator] as IIf(IsError([Measures].[Error Measure]), 'error', 'ok') 
    member [Measures].[Error or Orig] as IIf(IsError([Measures].[Error Measure]), 'error', [Measures].[Error Measure]) 
select { [Measures].[Error Measure], [Measures].[Error Indicator], [Measures].[Error or Orig] } on 0 
from [MyCube] 
+0

好了,不出我所料(我我一直在尋找一些有用的東西,我認爲不可能知道該列出現adomdCommand錯誤),但可能會使用您的VBA解決方案 –