2017-04-10 10 views
0

私の水晶レポートは、識別子(isbn、発注番号など)、著者、発行者など、書籍に関するデータを取得します。使用する識別子の優先順位付け

IDフィールドには、書籍を識別する複数の方法が格納されています。レポートには、そのレコードの識別子が表示されます。 1つの本に2つの識別子がある場合。発行番号と注文番号のいずれかである場合、レポートには明らかに1つがランダムに表示されます。

プリセット順に基づいてどのタイプを優先させることができますか?私はフィールド上の何らかのフィルタがうまくいくと思ったが、どうやってそれを見つけたのか分からなかった。テーブルを編集することはできませんが、レポート内でSQLを使用できます。

答えて

0

すべての種類のIDが1つのフィールドに格納されている場合は、レポート内でSQLコマンドを使用して、複数の仮想フィールドに分割するのが最善の方法です。

データベースフィールド/データベースエキスパートで、使用する接続を展開し、[コマンドの追加]を選択します。ここからは、現在使用している情報を取得するためのカスタムSQL文を書くことができます。同時に、IDフィールドを複数の異なるフィールドに分けることができます(レポートは関係していますが、テーブルは変更されません)。 )

トリックは、分離を行うコマンドを書く方法を理解することです。私たちはあなたのデータがどのように見えるのかわからないので、あなたはここからあなた自身のものです。

+0

ありがとうございます。私はこれをSQLで実現することができましたが、フィールドで式を追加することで実現できることを期待していました。私は試し続けます:) – tintanten

+0

理論的には、同じことを数式で行うことはできますが、足で自分自身を撃つことになります。SQLでフィルタを実行し、レポートが読み込まれる前に処理されます。余分な抑制、グループ分け、ヌルチェッカー、作品を追加する必要はありません。 SQLを書き直すだけで、*ロット*の少ない作業になります。 – 4444

+0

ありがとう!これは、私が必要とするものを達成するための最も簡単な方法でした。 – tintanten

0

ご提供いただいたごくわずかな情報に基づいて推測する場合は、レポートに式フィールドを使用して、このような目的を達成することをお勧めします。

IF ISNULL{first_priority_field_name} OR {first_priority_field_name} = '' THEN 
{second_priority_field_name} 
ELSE 
{first_priority_field_name} 

識別子フィールドが2つ以上ある場合は、ネストされたIF文を使用します。

+0

ありがとうございますが、フィールドがnullでも空でもありません - 同じフィールド内に格納されている値よりもある値を選択し、その値が存在しない場合は次の値を選択する必要があります。 – tintanten

関連する問題