web-dev-qa-db-ja.com

Reporting servicesrdlカスタムコードでデータセットの行をループする方法

カスタムコードのデータセットの行をループするにはどうすればよいですか?
データセットを含むレポートがあります。データセットをパラメーターとしてカスタムコード関数に渡します。しかし、それではどうしますか?利用可能な会員等の参考はどこにありますか?
これまでの私のダミーサンプルコードは次のとおりです。

Public Function ShowParameterValues(ByVal ds as DataSet) as object()
    Dim codes() As Object
    Array.Resize(codes,dc.???.Count)
    codes(0)=ds??(field???)(row??)
    return codes
End Function

注意:これは非常に単純なスクリプトになるため(機能する場合)、カスタムアセンブリなどには入りたくありません。

14
kcode

私はあなたがであなたの答えを得たと思います:

https://social.msdn.Microsoft.com/Forums/sqlserver/en-US/a7d59224-0ee5-491e-883b-2e5fcb3edeab/iterate-through-rows-of-dataset-in-reports-custom- code?forum = sqlreportingservices

上記のリンクから把握できた重要な情報が2つあります。

まず、Reporting Servicesのデータセットは、ADO.Netデータセットと同じタイプのオブジェクトではありません。レポートデータセットは、SSRSランタイムによって管理される内部オブジェクト(実際にはDataReaderオブジェクトから派生)であり、データテーブルなどを含むXML構造ではなく、レポートのカスタムコードに渡すことはできません。

次に、データセットを複数値パラメーターに「変換」する(または複数のフィールドが必要な場合は複数の複数値パラメーターに変換する)ことで、レポートのカスタムコード内のデータセットの行を反復処理する方法に関する解決策が投稿されました。

複数値のレポートパラメータには、次の特性が必要です。

非表示= True、複数の値を許可= True

[使用可能な値]タブ:目的のデータセットを選択します。検索可能なIDを値IDとして選択し、公開するフィールドをラベルフィールドとして選択します。

[デフォルト値]タブ:クエリから値を取得します。使用可能な[値]タブで選択したものと同じデータセットを選択します。値フィールドは、値IDに選択したものと同じです。

更新しないようにパラメーターを設定します(または、別のパラメーターの各反復からデータをロードします)。

さて、アイデアはこのパラメータを「検索可能」にすることです。この時点から、データセットを複数値パラメーターの配列として公開しました。

ここで、カスタムコードに次のコードを挿入します。

function GetDataSetLabelFromValue( id as integer) as String
dim i as integer
i = 0
for i = 1 to Report.Parameters!YourParameter.Count()
if Report.Parameters!YourParameter.Value(i) = id then
    GetDataSetLabelFromValue = Report.YourParameter!ReportParameter1.Label(i)
    Exit For
End if
next i
End Function

やりたいことができましたか?