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
私が思いついた解決策は次のとおりです:
サブレポートがメインレポートに追加されたら、サブレポートを右クリックして[サブレポートのリンクを変更...]を選択し、リンクフィールドを選択して、[フィールドに基づいてサブレポートのデータを選択する]チェックボックスをオフにします。
注:[フィールドに基づいてサブレポートのデータを選択する]チェックボックスをオンにして最初にパラメータを追加し、[サブレポートのリンクを変更]に戻って、サブレポートの作成後にオフにする必要がある場合があります。
サブレポートで、[レポート]メニューの[エキスパートの選択]をクリックし、[式エディター]を使用して、SQL列を#1から#4で選択したパラメーターと同じか、または同様に設定します。
(Subreport SQL Column) (Parameter from Main Report)
Example: {Command.Project} like {?Pm-?Proj_Name}
コマンドで、[作成]をクリックして新しいパラメーターを作成します。それを「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より前のバージョンでは、コマンドのパラメーターはスカラー値のみが許可されていました。
Select Projecttname, ReleaseDate, TaskName From DB_Table Where Project_Name like '%{?Pm-?Proj_Name}%' and ReleaseDate >= currentdate
一重引用符とワイルドカード文字に注意してください。私は同様のことを考え出すのに30分費やしました。
これを試して:
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をフィルタリングすることもできます。