0

文字列型のフィールド FiscalYearId で「すべて選択」をオンにしてレポートを実行しようとしています。「2」などの 1 つの文字列を正常に渡すことができ、レポートでそれが検出されます。ただし、「すべて選択」または「2,3,4」を渡そうとすると、マルチチェック フィールドはこれを検出しません。

レポートのストアド プロシージャの一部を次に示します。

ALTER PROCEDURE [dbo].[...]
@FiscalYearId varchar (100) = null ,
...
select ...
where ...
and (@FiscalYearID IS NULL OR p.FiscalYearId IN (SELECT * FROM SPLIT(@FiscalYearID, ',')))

レポートをトリガーして radwindow にポップアップする私の c# コードは次のとおりです。

`string years = "2,3,4";
newWindow.NavigateUrl = "../Reporting/SingleReport.aspx?Report=AdHocSourcingReport&VendorID=" 
+ vendorId + "&VendorReport=true" + "&FiscalYearId="+years;`

現在、vendorId 文字列と VendorReport ブール値は正常にプルスルーされます。レポートの実行時に入力されないのは、コンマで区切られた文字列です。私は最初に「すべて選択」を送信しようとしましたが、これは私が望むものです..どんな助けも大歓迎です!!

4

2 に答える 2

1

これは、過去にコンマで区切られた文字列の分割を処理した方法です。

関数の作成
    [dbo].[GetItemTable]
    (
    @アイテム VARCHAR(1000)
    )
戻り値
    @ItemTable テーブル
    (
    RowID INT IDENTITY(1,1) PRIMARY KEY,
    項目 VARCHAR(30)
    )
なので
始める

    DECLARE @ProcessItems VARCHAR(1000)
    DECLARE @CurrentItem VARCHAR(30)

    SET @ProcessItems = REPLACE(@Items, '''', '')

    IF SUBSTRING(@ProcessItems, LEN(@ProcessItems), 1) ','
        SET @ProcessItems = @ProcessItems + ','

        WHILE CHARINDEX(',', @ProcessItems) > 0
        始める

            SET @CurrentItem = LTRIM(CAST(SUBSTRING(@ProcessItems, 0, CHARINDEX(',', @ProcessItems)) AS VARCHAR(30)))

            に挿入
                @アイテムテーブル
                (
                アイテム
                )
            値
                (
                @CurrentItem
                )

            SET @ProcessItems = SUBSTRING(@ProcessItems, CHARINDEX(',', @ProcessItems) + 1, LEN(@ProcessItems))

        END -- スケジュール中   

    戻る
終わり

明らかに、現在のアイテムのサイズを必要に応じて変更できます。

次に、次のように使用します。

WHERE (p.FiscalYearId IN(SELECT item FROM dbo.GetItemTable(@FiscalYearID)))
于 2012-10-26T16:47:58.437 に答える
0

数年前に似たようなことをして、リストに同じような問題があったことを覚えています。

あなたはこれを試すことができます...

ALTER PROCEDURE [dbo].[...] @FiscalYearId varchar (100) = null ,
...選択...場所...そして
(@FiscalYearID IS NULL または p.FiscalYearId IN (@FiscalYearID))

また、「すべて選択」文字列を送信している場合は、それを確認してクエリを「会計年度テーブルから ID を選択」に変更する条件を手順に含める必要がある場合があります。

于 2012-10-26T16:39:05.357 に答える