|13| 実習先新規作成・重複を避ける

by Guantare.com

マスターテーブルに作るレコードはユニークであることが大切です。実習先や管理団体などにも当てはまりますが、重複しないようにするのは難しいことです。今回は重複しないような工夫をしてみます。

その前に今回もグローバルフィールドだらけになってしまいましたので、あらためてグローバルフィールドの説明します。

グローバルフィールド

グローバルフィールドの値はクライアントのメモリーにだけ保存され、どのレコードに入力しても全て同じ値になり、別のクライアントから入力された値はそのクライアントだけの値になります。

グローバルフィールドはスクリプトで変数やグローバル変数が使えるようになる以前からあり、変数の代わりによく利用していました。

グローバルフィールドとグローバル変数

グローバルフィールドと似ているものにグローバル変数があります。どちらもクライアントのメモリ内に保存されるのですが、グローバルフィールドはテキストだけでなく、数字、日付、オブジェクトなどフィールドタイプを設定できます。そして、リレーションのキーとしても機能します。

このリレーションキーとして機能するところが重要です。

グローバルフィールドの値はレイアウト上にフィールドを表示すれば目視でき、グローバル変数はデータビューアで確認するかマージ変数を配置すれば目視できます。

ただ、グローバル変数がいくつあるかは記録しておかなければ分かりませんし、名前が重複することもあり得ます。

グローバル変数はフィールドなのでデータベース管理画面で目視することができますし、同じテーブルで名前が重複することはありません。通常のフィールドと同じように入力を促すこともできます。

私は、グローバル変数はあまり使わないようにしていますし、サンプルファイルではグローバル変数を記録するテーブルを用意しています。

ホストされたファイルとスタンドアローン

ただ、気をつけなければならないこともあります。グローバルフィールドを持つファイルをホストする時は、ホストした時点での値が初期値となります。ホストにアクセスしている間はクライアントで入力した値が保持されますが、一度、終了して再度開くと初期値に戻ります。

スタンドアローンで使う時は最後に入力した値が保持されます。

使い方によってはスクリプトで初期値に戻すように工夫しておくことが必要です。

グローバルな繰り返しフィールド

グローバルフィールドは通常のフィールドと同じように繰り返しフィールドを利用することができます。条件付き書式を設定できない頃はオブジェクトタイプの繰り返しフィールドを利用して背景色を変えていました。今ではもっと便利な機能があり使う機会はないのですが、何かの折に利用できるかもしれません。サンプルのトップページに設定してあります。

重複しない工夫

実習先や管理団体を重複して登録してしまうと混乱を招くことになります。登録した時にユニークなIDを作ることはできますが、登録しようとしている実習先が既に登録されているかどうかは慎重にチェックしなければなりません。

実習先を入力する際に重複しないようにするための工夫が必要になります。
チェックする要素として電話番号、名称、住所を考えてみます。

ユニークな値として電話番号を利用できますが、複数の電話番号を持つ実習先もあります。
名称でチェックする方法では、同じ名称でも別な実習先であることもありますし、保育園や幼稚園は似たような名前が多くあります。
住所でチェックする方法では、住所の入力方法も様々です。
決定的な方法はないので、これらを複合的に組み合わせて重複をチェックするしかありません。最終的には目視になるので完璧ではありませんが、人間の記憶よりは絞り込みやすくなります。

|6|自己リレーション・コネクタの回で書いたように、実習先や管理団体のテーブルでレコードを作成する前にui01_実習管理のグローバルフィールドを使って重複をチェックした後、それぞれのテーブルに転記する方法をとります。

重複の可能性があるレコードの表示

重複を避ける方法として電話番号、実習先の名前、郵便番号をキーに3つのリレーションを設定して、同じ番号や似たような名前を表示させて目視で確認します。

電話番号を利用する方法

実習先を作成するグローバルフィールドに入力された電話番号と既にある実習先の電話番号を照合すれば重複をチェックすることができます。
電話番号ばユニークな値なので確実にチェックできますが、代表番号が登録されていたり、担当部署直通番号が登録されているかもしれません。

そこで複数行を使ったリレーションキーを用意します。

電話番号を入力するときハイフンを入れたり入れなかったり、半角だったり、全角だったり入力する人によってマチマチになっています。
GetAsNumber関数で数字だけにした上で、複数あれば改行して複数行に段落分けしてキーにします。この時にFAX番号も含めます。計算結果はテキストにします。

このキーは実習先のレコードと「ui01_実習管理」テーブルの両方に作ります。
複数行のキーではいずれかの1行が合致すればリレーションが成立します。

日本の電話番号は先頭に必ず「0」がつきますので数字だけにした時に消えてしまいますが、「0」がなくなってもユニークな値は保たれます。

同じ番号で重複が確認されて、名前や住所が異なっていたらどちらかの番号が間違っていることになります。

名前を利用する方法

電話番号は確実な方法ですが、既存のレコードに代表番号だけが入力されていて、新規レコードに直通番号が入力された場合は有効な働きをしません。

他に実習先の名称をキーにします。漢字では入力ミスの可能性もあるのでヨミを使います。ヨミを先頭から数文字づつ文字数を増やしながら改行してリレーションキーにします。これも既存のレコードとグローバルのテーブルの両方に設定します。

保育園や幼稚園は似たような名前が多い上に「〇〇市立」などが省略されたり、入力されたりと様々なので確実な方法ではありません。

郵便番号を利用する方法

郵便番号でリレーションを設定すると近くにある実習先をピックアップすることができますが、同じ実習先ではない可能性も多いので目視に頼ることになります。

電話番号と同じようにハイフンを抜いて数字にします。電話番号と違うのは先頭から5桁をキーにして周辺の地域も含むようにしたいので先頭の「0」が消えないように5桁のテキストにします。

完璧ではないですが、このように複数の情報を得ながら、最終的には目視で確認する方法でできる限り重複を避けるようにします。

サンプルファイルの使い方

実習先のマスターテーブルで直接作成する方法と受入先を設定する時に実習先がない場合に設定画面から作成する方法の2通りの入り口を作ります。

マスターテーブルから直接作る

「基本データ」の項目から「実習先」をクリックしてマスターテーブルに移動します。

「+」ボタンで実習先を作成する画面に移動します。

受入先設定から作る

「実習管理」の項目から「管理メニュー」をクリックします。

年度と実習名を選択し、さらに「受入先設定」をクリックします。

右側のポータルに表示された実習先のリストに表示されない場合に「+」ボタンで実習先を作成する画面に移動します。

新規レコードの作成画面

新規レコードの作成画面はマスター、受入先設定、どちらから移動しても共通です。

名称、郵便番号、電話番号を入力すると関連するような実習先が右側のポータルに表示される仕組みです。

ある程度絞り込むために名称と郵便番号のリレーションには事業区分もキーに組み込んであります。

「拡張表示」をクリックすることで事業区分での絞り込みをしないようにすることも可能です。マスターから作成する場合、事業区分が選択されていないことも考えられます。その場合は最初から拡張表示になっていて、後で事業区分で絞り込むことも可能になっています。

入力が終了後、重複を目視でチェックして「次へ」ボタンをクリックすると必須項目が入力されているかチェックをした上で実習先のテーブルで新しいレコードが作成されます。

管理団体の作成

管理団体を作成する時も同じようにします。

管理団体には管理対象となる区分がありますが、必ずしも実習先の事業区分と同じわけではありません。

公立、民営の違い

公立の保育所、幼稚園、児童館は自治体が管理していますが、民営の保育所、幼稚園はそれぞれの法人が管理しています。一つの法人が一つの保育所を運営している場合、ほとんど法人と保育所の業務内容の区分けはありません。一つの法人が複数の園を運営している場合は法人本部が実習事務の管理をしていることもありますし、それぞれの園が携わっていることもあります。株式会社が設立した法人の場合、事務作業は株式会社が担っていることもあります。

実習については公立の場合、実習依頼書は管理団体へ、そのほかの書類は実習先に送付するという例が多くあります。

公設民営と言って、設立は自治体ですが、実際の運営は民間委託という保育所も多くあります。〇〇市立第二保育所というような名称でも運営は民間の法人だったりします。

管理団体の管理対象としての保育所、幼稚園、児童館が該当するのは公立であるというのが前提です。

法人や株式会社が管理する保育所、幼稚園、施設の場合は管理対象として「法人事業所」とすることにします。

実習先では拡張表示するために「ui01_実習管理」テーブルのキーに「保育所、施設、幼稚園」の3行を入れていましたが、管理団体の場合は管理対象が入力されていないことも考えられます。

管理対象で絞り込むためには管理団体のレコードにキーとなる別のフィールドを作る必要があります。

そこで管理団体の管理対象のリレーションキーを「c02_管理対象 & “¶___”(アンダーバー3個)」にしておきます。「ui01_実習管理」テーブルでキーに「___」を入力すると管理対象に入力がなくてもリレーションが成立します。

●   ●   ●

重複を完全に避ける方法はありませんが、少しでも重複を避けられればと思います。


首都高速道路下の夜景。ちょっと派手な色合いが面白い夜の情景を醸し出していました。

iPhone 11 Pro 4.20mm ISO500 1/8 F1.8 +0.1EV P
heif
2020/1 Sumida Ward