web-dev-qa-db-ja.com

Crystal Reports-「コマンド」クエリへのパラメーターの追加

Crystalバージョン-Crystal Reports 2008ビジネスオブジェクト-XI

サブレポートにデータを入力するクエリを作成し、ユーザーからの入力に基づいてそのクエリにパラメーターを取得したいと考えています。私の質問は、パラメーターを受け入れるために 'Where'句の最初の行に入力する必要がある正しい構文は何ですか?

Crystal Reportsで使用しているクエリは次のとおりです。

Select 
Projecttname,
ReleaseDate,
TaskName

From DB_Table

Where
(Project_Name like {?Pm-?Proj_Name})) and 
(ReleaseDate) >= currentdate
7
Jeremy F.

私が思いついた解決策は次のとおりです:

  1. お気に入りのクエリ開発ツールでSQLクエリを作成する
  2. Crystal Reportsでは、メインレポート内で、サブレポートに渡すパラメーターを作成します。
  3. 「レポート作成ウィザード」の「データ」部分にある「コマンドの追加」オプションと#1のSQLクエリを使用して、サブレポートを作成します。
  4. サブレポートがメインレポートに追加されたら、サブレポートを右クリックして[サブレポートのリンクを変更...]を選択し、リンクフィールドを選択して、[フィールドに基づいてサブレポートのデータを選択する]チェックボックスをオフにします。

    注:[フィールドに基づいてサブレポートのデータを選択する]チェックボックスをオンにして最初にパラメータを追加し、[サブレポートのリンクを変更]に戻って、サブレポートの作成後にオフにする必要がある場合があります。

  5. サブレポートで、[レポート]メニューの[エキスパートの選択]をクリックし、[式エディター]を使用して、SQL列を#1から#4で選択したパラメーターと同じか、または同様に設定します。

                    (Subreport SQL Column)  (Parameter from Main Report)
            Example:  {Command.Project} like {?Pm-?Proj_Name}
    
6
Jeremy F.

コマンドで、[作成]をクリックして新しいパラメーターを作成します。それを「project_name」と呼びます。作成したら、その名前をダブルクリックしてコマンドのテキストに追加します。クエリは次のようになります。

SELECT Projecttname, ReleaseDate, TaskName
FROM DB_Table
WHERE Project_Name LIKE {?project_name} + '*'
AND ReleaseDate >= getdate() --assumes sql server

必要に応じて、この({?project_name})フィールドでメインレポートをサブレポートにリンクします。メインレポートとサブレポートの間にリンクを確立しない場合、CRはサブレポートのパラメーターを要求します。

2008より前のバージョンでは、コマンドのパラメーターはスカラー値のみが許可されていました。

10
craig
Select Projecttname, ReleaseDate, TaskName From DB_Table Where Project_Name like '%{?Pm-?Proj_Name}%' and ReleaseDate >= currentdate

一重引用符とワイルドカード文字に注意してください。私は同様のことを考え出すのに30分費やしました。

3
Lance E

これを試して:

Select Project_Name, ReleaseDate, TaskName
From DB_Table
Where Project_Name like '{?Pm-?Proj_Name}'
  And ReleaseDate >= currentdate

currentdateは、機能する有効なデータベース関数またはフィールドである必要があります。 MS SQL Serverを使用している場合は、代わりにGETDATE()を使用してください。

メインレポートのパラメーターに基づいてサブレポートのレコードをフィルター処理する場合は、テーブルをサブレポートに追加してから、メインレポートとサブレポートの間にProject_Nameリンクを作成する方が簡単な場合があります。次に、選択エキスパートを使用して、ReleaseDateをフィルタリングすることもできます。

0
Dileep A