ストアドプロシージャ(sproc)は、アプリケーション全体の論理の一貫した実装を達成するのを支援し、パフォーマンスを向上させ、データベースのテーブルの詳細を知る必要性からユーザーを解放できます。ストアドプロシージャの主な利点の1つは、パラメータを渡してデータベースにレコードセットをフィルタさせることができる点です。これにより、より小さいデータセットが返され、レポートの操作がスピードアップして簡単になります。
[C1Report ウィザード]のストアドプロシージャからレポートにデータを移植できます。[C1Report ウィザード]を開くには、次の1つを実行します。
[レポートの編集]リンクへのアクセス方法の詳細については、「C1Report タスクメニュー」または「C1Report コンテキストメニュー」を参照してください。
ストアドプロシージャからレポートにデータを移植することは、SQL ステートメントや単純なテーブルを使用するのと何も違いはありません。C1ReportWizard の最初の画面で、〈...〉ボタンをクリックし、データソースを選択します。次に、使用可能な[データソース]のリストから[ストアドプロシージャ]を選択します。
[次へ]を選択して、ウィザードを続行します。
他のデータフォームのロードと同様に、次の2つのオプションがあります。
DataSource の ConnectionString と RecordSource プロパティを使用し、データソースを選択できます。
デザイナで、[DataSource]ダイアログボックスを使用し、接続文字列を選択(省略符号〈...〉ボタンをクリック)した後、リストから使用するテーブルまたは sproc を選択します。たとえば、次のようになります。
connectionstring = "Provider=SQLOLEDB.1;Integrated Security=SSPI;" + "Persist Security Info=False;Initial Catalog=Northwind;Data Source=YOURSQLSERVER;" recordsource = "[Employee Sales by Country]('1/1/1990', '1/1/2010')"
(この場合ストアドプロシージャの名前はスペースを含むため、角カッコ([])で囲っています。)
希望する任意のメソッドを使用してデータソースを作成した後、それを DataSource の Recordset プロパティに割り当てることができます。
このメソッドは、コードの記述を必要とし、どこかにキャッシュしたデータを使用して複数のレポートを生成する場合に便利です。これは、前のメソッドをオーバーライドします(ConnectionString、RecordSource、および Recordset を指定した場合 C1Report は Recordset を使用します)。
構文は使用する接続/アダプタのタイプ(OleDb、SQL、Oracle など)によって異なります。構文をすぐに取得する最も簡単な方法は、テーブルまたは sproc を Visual Studio の サーバーエクスプローラからフォームにドラッグする方法です。これにより、必要なすべての暗号要素が追加され、その後、コードを調べて、必要な部分を選択できます。
ストアドプロシージャを名前によってデータソースとして指定できます。sproc がパラメータを持つ場合、それらをパラメータとして渡します。たとえば、MSSQL および ADVENTURE_WORKS.mdf データベースに対して構築されるレポート定義では、[C1Report デザイナ]で指定された SQL 要求は次のようになります(必要に応じて ADVENTUREWORKS_DATA.MDF のパスを調整)。
PARAMETERS Empoyee Int 290;
DECLARE @RC int
DECLARE @EmployeeID int
set @EmployeeID = [Empoyee]
EXECUTE @RC = [C:\ADVENTUREWORKS_DATA.MDF].[dbo].[uspGetEmployeeManagers]
@EmployeeID