レコードを検索するためのパーツです。大きく2通りの使い方があります。
有無による分岐
検索条件に一致するレコードが1件でもあった場合と1件もなかった場合で、
その後の処理が分岐します。
「レコード検索」パーツを使えば、レコード登録前にDBを検索し、既に同じデータが
ある場合には登録を行わないといった処理を作成できます。
データの受け渡し
検索結果があった場合はそのデータを他のパーツで使用することができます。
「ファイル生成」パーツで使えば検索結果をExcelファイルに出力でき、
「レコード登録」パーツなら検索結果をDB内にレコードとして保存できます。
このように、データの受け渡し役として使うことができます。
詳細設定の手順
- 検索対象を指定します。
通常は「新しく検索する」を使用します。
「直前の処理までの検索から絞込み」は、このパーツ以前に検索した結果を、
さらに絞り込みたい場合に使用します。
- 検索したいDBを指定して「次へ」をクリックすると、下記のような画面になります。
ここで、レコードを検索する検索条件を指定します。
「検索結果の並び順」では検索結果が複数あった場合のレコードの並び順を選択します。
1件まで絞込みのチェックボックスをONにすると、条件に該当する検索結果が複数
あっても、検索結果の並び順で指定した項目で並べ替えて先頭に来るレコードだけを
取得できます。
検索条件を指定し、「確定」ボタンをクリックすると、自動処理パーツ設定画面には
下記の様な形で表示されます。
検索結果があった場合の処理は下に、無かった場合の処理は右側に追加していきます。
下方向の処理では、このパーツの検索結果に含まれる情報を使用できます。
検索結果の取得単位
検索対象のデータベースに明細がある場合、検索結果の取得単位を選択できます。
取得単位とは
明細項目があるレコードは、情報を入れる箱(レコード)の中にさらに複数の情報(明細)があるという入れ子の構造になっています。この入れ子構造の扱い方が、取得単位です。
下図のチェックを外した場合はレコード単位で、付けた場合は明細単位で検索結果を
取得することになります。
レコード単位で取得する場合の検索条件
「検索結果を明細単位で取得する」のチェックを外しておくと、検索結果はレコード単位で取得することになります。
この場合、検索条件を明細項目にどう当てはめるか、明細条件のラジオボタンで選ぶことができます。
※明細条件と明細単位(取得単位)は全く違うものですので、ご注意ください。
「明細条件」欄で 「明細行のいずれかが一致」 にチェックを入れると、条件に合致する
明細行を1行でも含むレコードはすべてヒットします。
【設定例】
【例】注文DB
「明細条件」欄で 「明細行がすべて一致」 にチェックを入れると、
すべての明細行が設定した条件に合致したレコードのみ取得します。
【設定例】
上記の設定で検索すると、明細行の「商品名」が すべて「椅子」であるレコードだけが
ヒットします。
【例】注文DB
上記のような2つのレコードがある場合、明細行の商品名がすべて「椅子」である下の
レコードだけが検索結果になります。
【使用例】重複レコードのチェック
あるDBに選択レコードと同じ値のレコードがあるかどうかを調べる処理は、
「レコード検索」パーツのよくある使用例です。
同じデータを2つ重複して登録してしまわないよう、「レコード検索」パーツを事前チェックに用います。
処理の流れは下記の通りです。
【検索条件】
重複レコードをチェックする際は、比較したい2つの項目を演算子「等しい」で比較します。
【検索結果による分岐】
「レコード検索」パーツは、合致する結果の有無でその後の処理が分岐します。
- あった場合は下に伸びる青いルート
⇒既存レコードの更新(例:注文回数を増やすなど)処理 (※)
- なかった場合は右に伸びる赤いルート
⇒新規レコードの登録(例:顧客基本情報の新規登録など)処理
このような分岐が典型例の1つです。
※条件に合致したレコード(今回の例であれば重複レコード)を後続の
「レコード更新」パーツで更新する場合、「1件まで絞込み」の
チェックボックスをONにする必要があります。
取得した複数件のレコードに対して一括で更新を行うことはできません。
取得した1件のレコードのみ更新できます。
【例】
“注文DB”の「顧客名」 が、“顧客DB”の「顧客名」 と等しい
(※ただし、“顧客DB”は【選択レコード】があるDBのリンク先)
【注文DBを検索するレコード検索パーツの絞込み条件設定画面】
【使用例】検索結果でファイル生成
ここでは請求書の明細を例にとって、検索パーツで抽出した複数のレコードをExcelに流し込む場合の設定方法をご案内します。
Excelへの流し込みの設定方法の詳細は、自動処理設定:「ファイル生成」パーツの記事をご覧ください。
環境の例
下記のご説明は、こちらのような環境を前提にしています。
また、それぞれのDBには、下記のようなデータがあると仮定します。
明細DBでは、注文IDを使ってどの注文に関する明細かを管理しています。
注文DBと明細DBを使用して、下記のようなExcelの請求書を作成してみましょう。
※「###●●●###」となっている部分にデータが流し込まれます。
「レコード検索」パーツ
- 注文DBで自動処理新規追加をクリックして、自動処理の追加を行います。
- 自動処理名を入力し、「確定」ボタンをクリックします。
- 次に「パーツ設定」ボタンをクリックします。ここでは下記2つのパーツを作ります。
#1. レコード検索:ボタンをクリックした注文の内容を、明細DBから検索して集める
#2. ファイル生成:検索した結果(明細DBのレコード)をExcelの雛形へ流し込む
- まず、「レコード検索」パーツを追加します。
- 「レコード検索」パーツの詳細設定で、検索対象となるDBを指定します。
ここでは明細DBから明細情報を検索しますので、上記のように明細DBを指定します。
- 続いて検索条件を指定します。
集めたいのは、ボタンをクリックしたレコード(「選択レコード(注文DB)」)に
リンクしている明細のため、DBリンク項目とキー項目を上記のように登録します。
このように、<DBリンク項目が><リンク先のキー項目と><等しい>という検索条件は「レコードとリンクしているレコードを検索する」という意味になり、よく用います。
今回は、検索によってリストを作りたい(複数ある明細を拾い集めたい)ため、「1件まで絞込み」のチェックは付けません。
(チェックを付けると、先頭の1件しか取得できません。)
「ファイル生成」パーツ
- 次に、Excelへの流し込みを行うための「ファイル生成」パーツを追加します。
- 「ファイル生成」パーツの詳細設定で、生成するファイルの設定を行います。
- 雛形のExcelファイルを指定して、「読込」ボタンをクリックします。
- 各キーワードに流し込むデータを指定します。
上記の例では、「商品コード」から「金額」までの内容が「レコード検索」パーツで
取得した“明細DB”のデータで、それ以外は“注文DB”のデータを流し込むように設定
しています。
また、「商品コード[複]」というように、[複]という表示がされていますが、
これは対象となるレコードが複数件になることを意味します。
このような場合には、雛形中の当該キーワードの下方向に向かって、
検索にヒットしたレコードの件数分だけデータが流し込まれます。
これで自動処理の設定は完了です。
この後、メニューの設定を行って、先ほど作成した自動処理のボタンを表示するように
します。すると、以下のように注文DBのレコードの横にボタンが表示されます。
ここで、注文ID:00000003のデータの「請求書を作る」ボタンをクリックすると、
Excelファイルが指定したフォルダ内に作成されます。
作成されたファイルを見ると、下記のようになっています。
下記の明細DBのデータのうち、注文IDが00000003のものが請求書の明細としてExcelに
流し込まれています。