1

パラメーターとして渡された日付値 (AsOnDate という名前) に基づいて、Web パーツ日付フィルターからパフォーマンス ポイント レポートの MDX に値をフェッチしようとしています。これはアカウント データベースであり、シナリオは休眠アカウント データを取得することです。私が直面している問題は、休眠日を持つアカウントを AsOnDate 値の 6 か月前、つまり AsOnDate -6 か月まで取得する必要があることです。次のように、DateAdd() 関数を使用して 6 か月前の日付を計算できました。

DateAdd('m', -6, DateValue('<<AsOnDate>>'))

ここで、WHERE 句のパラメーターの代わりにこの値を渡す方法がわかりません。MDX クエリは次のようになります。

WITH 

SET [Products] AS { <<Product>> } 

MEMBER [Measures].[Dormant A/C Count] AS ([Measures].[Account Head Count]) 

MEMBER [Measures].[Dormant A/C Vol.] AS ([Measures].[LC Balance]) 

MEMBER [AH].[Subhead - Description].[Totals] AS Aggregate([Products]) 

SELECT 

{ [Measures].[Dormant A/C Count], [Measures].[Dormant A/C Vol.]} 
ON COLUMNS, 

{[Products], [AH].[Subhead - Description].[Totals]} 
ON ROWS 

FROM 
[MyCUbe] 

WHERE (

[AH].[Is Dormant].&[1], 
[AH].[Is Inoperative].&[0], 
{NULL : [AH].[Dormant Date].&[ DateAdd('m', -6, DateValue('<<AsOnDate>>')) ]} 

) 

次のエラーが表示されます。

Error running data source query.
The 'DateAdd('m', -6, DateValue('2012-12-03'))' 
string cannot be converted to the date type.

私は StrToMember() を次のように試しました:

WHERE ( 
[AH].[Is Dormant].&[1], [AH].[Is Inoperative].&[0], 
{ NULL : StrToMember("[AH].[Dormant Date].&["+DateAdd('m', -6, DateValue('<<AsOnDate>>'))+"]")} 
) 

ただし、次のように日付フィルター値を直接渡すと正常に動作します。

WHERE ( [AH].[Is Dormant].&[1], [AH].[Is Inoperative].&[0], 
{ NULL : [AH].[Dormant Date].&[<<AsOnDate>>T00:00:00]} ) 
4

1 に答える 1