Crystal Reports で SQL テーブル タイプの入力パラメータを指定するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/3807097

質問

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

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

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 でそのパラメータを定義する方法がわかりません。新しいパラメータの作成ウィザードのタイプのリストはかなり少ないです。

役に立ちましたか?

解決 3

私の知る限り、これは不可能です。クリスタルは、SQL Serverなどの他のアプリケーションから認識していないことをデータ型を取ることはありません。

他のヒント

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

  1. カンマ区切りの文字列としてテーブルに入力するという最初のアイデア。
    または
  2. プロシージャの出力を SQL Server の一時テーブルに保存し、それをインポートします。

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

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

  • セッションIDと入力値を保持するテーブルを作成します。
  • レポートを実行する直前に、セッション ID と必要な入力値をテーブルに設定します。
  • セッション ID をパラメータとしてレポートに渡します。
  • セッション ID をレポートからプロシージャにパラメータとして渡します。
  • セッション ID に基づいて新しいテーブルから入力値を選択する手順をコーディングし、レポートの実行後にセッション ID のエントリを削除しますか?
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top