1

我有一个 MDX 查询:

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

其中 [Measures].[Non Existing] 在 MyCube 中不存在。

如果我尝试在 SSMS 中执行此查询,我将收到一个带有一个单元格的 cellSet,并且内容将为 #error(以及工具提示中的明确消息)。

另一方面,如果我创建一个 AdomdCommand 并使用以下命令执行此查询:

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

我不会收到异常,我的数据集将加载一个具有唯一列的唯一行,并且内容将为空。我调查了 GetColumnError() 方法,但没有指定任何内容。

有没有办法知道这个单元格是错误的而不是空的(不更改为 cellSet)?

4

1 回答 1

2

我不知道AdomdCommands 的解决方案,但在 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]
于 2013-07-26T14:35:31.513 回答