1

カスタム型と日付型属性にいくつかの文字列型属性がありますr_creation_date。それらをすべて検索に使用して、より多くのフィールドに値を入力すると、結果が絞り込まれるようにしたいと考えています。

私は D2-Client 3.1 を使用しており、D2-Composer を使用して検索プロパティ ページとクエリ フォーム (DQL を指定している場所) を作成しています。

文字列型フィールドでフィルタリングするために、次の DQL を作成しました。

select * from my_custom_type
    where (strattrib1 like '%$value(strattribinput1)%') and
          ("strattrib2" like '%$value(strattribintput2)%') and
          ("strattrib3" like'$value(strattribintput3)%') and
          ("strattrib4" like '%$value(strattribintput4)%') and
          ("strattrib5" like '%$value(strattribintput5)%') and
          ("strattrib6" like '%$value(strattribintput6)%')

ここLIKE %には二重の目的があります。まず、何らかの文字列が入力されるたびに、その属性にその文字列が出現するかどうかをチェックします。何も入力されていない場合、その属性のすべての値が考慮されます。これによりAND、空の入力を明示的にチェックせずに ing が可能になります。(として$value(strattrib1)<>'')

r_creation_dateここで、このクエリに date-type 属性のフィルターを追加します。DATEDIFF()ただし、日付の比較に関数を使用する必要がありr_creation_date、次のように入力がないことを明示的にチェックする必要があるため、これを行う方法がわかりません。

select * from my_custom_type
    where (strattrib1 like '%$value(strattribinput1)%') AND
          ("strattrib2" like '%$value(strattribintput2)%') AND
          ("strattrib3" like'$value(strattribintput3)%') AND
          ("strattrib4" like '%$value(strattribintput4)%') AND
          ("strattrib5" like '%$value(strattribintput5)%') AND
          ("strattrib6" like '%$value(strattribintput6)%') AND
          (DATEDIFF(day, "r_creation_date", DATE('$value(r_creation_date_intput)')) >= 0 AND $value(r_creation_date_input)<>'')          

ここで、ユーザーが の日付を選択しない場合r_creation_date_input、クエリ全体$value(r_creation_date_input)<>''が に評価されます。したがって、選択クエリは何も返しません。FALSEFALSE

質問

  • これどうやってするの?
  • これを行うための他のアプローチはありますか?
  • 標準的なアプローチは何ですか?
  • 同じ DQL に日付フィールドにさらにフィルターを追加したいと考えています。それで、それは可能ですか?
  • 文字列属性の入力を検証するにはどうすればよいですか? Java を記述して D2-Client にアタッチできますか?
4

1 に答える 1

0

アプローチの1つはこのようなものです

AND ((DATEDIFF(日, "r_creation_date", DATE('$value(r_creation_date_intput)') OR $value(r_creation_date_intput) = '')

ユーザーが何も入力しない場合、2 番目の条件は true になり、クエリの他のすべての部分は正常に機能します。

ただし、通常、ユーザー入力が空の場合、Documentum は句を自動的に除外します。たとえば、タスクスペース検索フォームの場合、Documentum は自動的にそれを行います。D2についてはわかりませんが、おそらくうまくいくでしょう。

于 2013-10-31T10:59:42.747 に答える