0

キー値のリストをSQL-Serverのストアドプロシージャに渡す必要があります。そのストアドプロシージャは、CrystalReportに必要な値を返します。

カンマ区切りのリストを送信してそれを解析するのではなく、テーブルタイプを使用することをお勧めします。したがって、私はそのテーブルタイプを単純に整数で作成されたものとして定義しました。

CREATE TYPE [dbo].[SiteIdentifiers] AS TABLE 
(
    [SiteId]     BigInt, 
    PRIMARY KEY ([SiteId])
)

ただし、Crystal Reportを変更して、それを入力パラメーターとして使用する必要があります。(ストアドプロシージャは..。で始まります。

CREATE  PROCEDURE [dbo].[sp_SiteReport]
    @SiteIds    [dbo].[SiteIdentifiers] ReadOnly
AS

レポートは主にColdFusionまたはC#.netで呼び出されるため、テーブルタイプにIDを追加する際に問題が発生することはないと思います。しかし、Crystalでそのパラメーターを定義する方法がわかりません。新規パラメータの作成ウィザードのタイプのリストは、ほとんどありません。

4

3 に答える 3

1

Crystalのパラメータの概念を正しく使用しているとは思いません。私の知る限り、これは手動でデータを入力するのに最適です(そして、多次元配列を渡そうとしているのであって、それを最大限に活用しようとしているのではありません)。私はお勧め:

  1. テーブルをコンマ区切りの文字列としてフィードするという最初のアイデア。
    また
  2. プロシージャの出力をSQL-Serverの一時テーブルに保存し、それをインポートします。
于 2010-09-27T19:59:29.990 に答える
1

私の知る限り、これは不可能です。Crystalは、SQLServerなどの他のアプリケーションから認識されないデータ型を取得しません。

于 2010-10-20T23:47:54.667 に答える
0

通常、プロシージャから実行されるCrystalレポートは、レポートをプロシージャに向けることによって作成されます。プロシージャに必要なパラメータはすべて、レポートに自動的に生成されます。レポートがテーブル入力パラメータを生成せずにCrystalReportsデザイナでこれを行った場合、この方法で行うことはできないと思います。

カンマ区切りのリストを使用する別の方法として、次のことを検討しましたか。

  • セッションIDと入力値を保持するテーブルを作成し、
  • レポートを実行する直前に、セッションIDと必要な入力値をテーブルに入力します。
  • セッションIDをパラメータとしてレポートに渡します。
  • レポートからプロシージャにセッションIDをパラメータとして渡す。
  • セッションIDに基づいて新しいテーブルから入力値を選択する手順をコーディングし、レポートの実行後にセッションIDのエントリを削除しますか?
于 2010-09-28T10:27:06.667 に答える