16

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

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

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

4

1 に答える 1

3

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

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

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

于 2016-08-17T14:39:12.477 に答える