1

私は薬局で働いています。薬を分類する 1 つの方法は、GPI と呼ばれる識別子です。GPIの数字には意味があり、親子関係があります。

ここに画像の説明を入力

私のデータベースには、グループのテーブル、クラスのテーブル (グループを含む)、およびサブクラスのテーブル (グループとクラスを含む) があります。クラスの数値は、グループ全体で繰り返されます。たとえば、グループ 01 にはクラス 01、02、03、および 04 が含まれる場合があります。グループ 02 にも 01、02、03、および 04 が含まれる場合があります。クラスはグループごとに異なり、同じ ID を使用します。

JasperReports Server 4.7 には、GPI グループを表示する複数選択クエリ入力コントロールがあります。クラスのリストを表示するために gpi_group 値を受け取る複数選択クエリ カスケード入力コントロールもあります。カスケード入力コントロールを設定するクエリは次のとおりです。

 SELECT DRUG_GROUP, DRUG_CLASS, CLASS_NAME
 FROM Schema.DRUG_CLASSES
 WHERE $X{IN, DRUG_GROUP, gpi_group}
 ORDER BY DRUG_GROUP, DRUG_CLASS

表示される列: DRUG_GROUP、DRUG_CLASS、CLASS_NAME

値列: DRUG_CLASS

そして、1つの薬物グループを選択するとうまく機能します. グループ 01 は次のとおりです。

ここに画像の説明を入力

グループ 02 は次のとおりです。

ここに画像の説明を入力

しかし、それらを一緒に選択すると:

ここに画像の説明を入力

入力コントロールは、複数の GPI グループが選択されているときに発生する GPI クラスの重複値を好まないようです。値の列を GPI クラス名 (重複がない場合) に変更すると、表示は希望どおりになります。

ここに画像の説明を入力

ただし、値列を GPI クラス名にしたくはありません。GPI クラスにしたいのです。GPI サブクラス入力コントロールを、GPI グループおよび GPI クラス入力コントロールからの値に制限し、GPI グループ、GPI クラス、および GPI サブクラスをクエリに入力したいと考えています。

そのカスケード入力コントロールを取得して「重複した」GPI クラス値を表示する方法について何か考えはありますか?

4

1 に答える 1

0

これが私がやろうと決めたことです -

入力コントロールでは、値列に一意の値が必要です。これを回避する方法はないと思うので、ただそれを転がすつもりです。クエリで連結された文字列を処理します。

GPI クラス カスケード入力コントロールのクエリ:

 SELECT 
   DRUG_GROUP, 
   DRUG_CLASS, 
   CLASS_NAME, 
   DRUG_GROUP||DRUG_CLASS AS GROUP_CLASS
 FROM Schema.DRUG_CLASSES
 WHERE $X{IN, DRUG_GROUP, gpi_group}

値列: GROUP_CLASS (GPI グループと GPI クラスの連結)

GPI サブクラス カスケード入力制御のクエリ:

 SELECT 
   DRUG_GROUP, 
   DRUG_CLASS, 
   GROUP_CLASS, 
   DRUG_SUBCLASS, 
   GROUP_CLASS_SUBCLASS,      
   DRUG_SUBCLASSNAME 
 FROM (
     SELECT 
       DRUG_GROUP, 
       DRUG_CLASS, 
       DRUG_GROUP||DRUG_CLASS AS GROUP_CLASS, 
       DRUG_SUBCLASS, 
       DRUG_GROUP||DRUG_CLASS||DRUG_SUBCLASS AS GROUP_CLASS_SUBCLASS, 
       DRUG_SUBCLASSNAME
     FROM Schema.DRUG_SUBCLASSES
 )
 WHERE $X{IN, GROUP_CLASS, gpi_class_cas}

値列: GROUP_CLASS_SUBCLASS (GPI グループ、GPI クラス、および GPI サブクラスの連結)

于 2012-08-29T14:44:05.227 に答える