Q&A

回答の並べ替え:
投稿新規に質問を投稿する

日時での検索について

Momo-metal Momo-metal

2019-06-26 13:16

早速ですが、質問させていただきます。

CELFでのアプリ作成をしておりますが、日付を条件に検索する場合に、うまくいかず悩んでいます。型が「日時」のカラムに対して
[カラム1][が次以上][=A1]
かつ
[カラム1][が次以下][=A2]
という形で、検索条件を作成しています。
アプリでは、利用者に検索条件となる日時を入力してもらいますが、両方入っている場合は問題ないのですが、入力がないと検索結果が0件になってしまいます。両方とも入力がない場合は全件表示するようにしたいのですが、どのようにしたらよいでしょうか?

アドバイスをお願いいたします。

Momo-metal Momo-metal
Yexiongmaoさん

コメントありがとうございます。
なるほど、セルにあらかじめ関数を入れておけば、アクション内で設定しなくても大丈夫ですね。
他にもいろいろアドバイスありがとうございます。
検討して取り入れてみたいと思います。
Yexiongmao Yexiongmao
終わったあとに割り込むようで恐縮ですが、また別の案がありますので投稿いたします。
下の㈱コサウェル様の画面をお借りすれば、K2セルを =if(D6="",1900-01-01",D6)  K3セルを =if(F6="","2999-12-31",F6)とします。
D6,F6セルにセル変更時のアクションを設定して、セルの入力入力内容をチェックすることで検索ボタンを押す前に0件が返るのを回避できます。
セル変更時のアクションを利用すると、Excelの入力規制よりきめ細かな対応が可能になります。
開始日、終了日の範囲を限定して、範囲外のときはメッセージボックスを出し、その後該当セルをクリアしたり、フォーカスを当てたりすれば利用者により親切なアプリになると思います。
(ちなみに、セルにフォーカスを当てるには㈱コサウェル様提供の機能拡張を使用することで可能になります)
Momo-metal Momo-metal
回答ありがとうございました!
こんなに早く回答いただけるとは思いませんでした。
コサウェルさんの案が修正量が少なそうでしたので、ベストアンサーにさせていただきました。
また質問させていただくかと思いますが、よろしくお願いいたします。
株式会社 コサウェル 株式会社 コサウェル パートナー
メダルベストアンサー
パートナーの株式会社コサウェル と申します。

私どもも「テーブルからデータを複数件取得する」アクションを利用しての検索と推測して回答させていただきます。

すでに、SCM様が回答していらっしゃいますが、ブランクの値で検索を実行しているため、検索結果が0件となっています。そのため、検索前に「空にならないように値を設定する」という方法をご提案します。

入力したセルの値をそのまま使うのではなく、制御用のセルにコピーして検索条件とします。ここで、コピーする際に「もしxxxならば」アクションを使っていただき、「A1セルが空」の場合、"1900-01-01"のようにデータがすべて入るような過去の日付を設定し、空でなければ、A1セルの値をコピーします。
A2セルのほうは同じように「ASセルが空」の場合、"2999-12-31"のようにデータがすべて入るような未来の日付を設定し、空でなければ、A2セルの値をコピーします。

テーブルからデータを複数件取得する」アクションの条件としては、制御用セルの値を使って検索していただければ、入力した値が空でも結果的に検索結果が表示されるかと思います。
アクションを作成してみましたので、参考になさってください。
メールコンタクトをとる
SCSK北海道
CELFを利用しております。
SCSK北海道と申します。

先の方も提示されていた条件分岐で対応する場合は下記のような記載になります。
A1(開始日)
A2(終了日)
とした場合に
「もし A1<>"",A2<>"" ならば」 ⇒ どちらの日付も入っている。
■検索条件
 (開始日)が次以上 = A1
 (終了日)が次以下 = A2
「もし A1<>""ならば」 ⇒ 開始日は入っている
■検索条件
 (開始日)が次以上 = A1
「もし A2<>""ならば」 ⇒ 終了日は入っている
■検索条件
 (終了日)が次以下 = A2
「そうでなければ」
 検索条件なし
と4つのネストを行えば期間指定や全件検索が可能になります。
複数件数取得のアクション自体は1つ作成すればCtrl+左クリックしながらドラッグ&ドロップで複製が出来るので修正箇所は少なく済みます。
新日本コンピュータマネジメント株式会社 新日本コンピュータマネジメント株式会社 パートナー
CELFパートナーのSCMと申します。

ご質問されております件、回答させて頂きます。

データ操作の「テーブル XXX から複数件取得する」を使って設定を行っていると思いますが、
検索条件で使う入力値[=A1]や[=A2]がブランクであった際、ブランクの値で検索を実行している為、検索結果が0件となります。
※入力値がブランクの場合に、検索条件から除外する機能は今のところありません。

但し、以下の方法にて実装が可能です。
実装方法は以下の2点になります。

1)データ操作の「テーブル XXX から複数件取得する」で実装したい場合
 入力の有無のパターン毎に分岐条件を使い「テーブル XXX から複数件取得する」を複数配置する。
 ※検索条件の入力項目が多い場合、分岐の数が多くなり現実的ではありません。
 
2)拡張機能のSQLアクションを使う。
 CELFホームページの連携サービスに、[SQLアクション]という機能があります。
 機能をダウンロードして、CELFの拡張オプションをセットアップする必要があります。
 https://www.celf.biz/solution/solution_sql/

 こちらの機能を利用すると、データ取得をSQLで記述する事が可能となります。
 
 SQLを記述する際のWHERE句において、1つの検索条件につき、以下の通り記述して頂ければ可能です。
 <サンプル>
  AND (
   ("" = %[A1]%)
   OR (
    "" != %[A1]%
    AND ([カラム1] >= %[A1]%)
   )
  )
 ※[A1]はパラメータの定義名となります。

お試し頂ければと思います。
メールコンタクトをとる