関係の作成

概要

SkyDesk Creatorでの関係は2つのフォーム間のリンクのことです。関係は同じアプリ内でも、異なるアプリのフォーム間で作成できます。関係を作成する際に、SkyDesk Creatorで1つのフォームのレコードを、別のフォームの1つまたは複数のレコードとリンクするようにします。アプリ「従業員管理」を作成して会社の従業員を管理すると仮定します。この中で、氏名、生年月日、メールアドレス、入社日、部門など従業員の詳細を入力するための「Employee」というフォームを作成します。詳細を入力すると、同じ部門に所属する複数の従業員が表示されるかもしれません。これはつまり、(それぞれの従業員用に)部門名を繰り返し入力する必要があるということです。これは、時間の無駄と値の重複を招きます。 (:"Engineering", "Enginering")。 更に、組織内の部門に関して言えば、部門名だけではなく、部門長や連絡先情報など、その他の情報を管理する必要が出てきます。効率的にデータを管理し、値の重複を避けるには -

  1. 組織内のすべての部門の情報を格納する[Department]という他のフォームを作成して、
  2. [Department]フォームと[Employees]フォームの関係を作成します。

関係を作成すると、「Employee」フォームにルックアップ項目を追加するだけで、「Department」フォームの部門名の項目からのデータを表示ができます。

ルックアップの項目は、元のフォーム(上記の例のDepartment)でレコードのID を検索します。また、ID項目を利用して、関連のフォームからデータを取得して更新できます。例は「Fetch data from a Form and use it in another Form」を参照してください。

単数選択を使った関係の作成

上記の[Department]と[Employees]を含む[Employee Manager]アプリケーションを例にとるとしましょう。 一般的に、従業員は1つの部門(1対1)を割り当てられます。 そこで、単数選択ルックアップ項目を使って、Employees フォームとDepartmentフォームの関係を作成します。これを実施するには、

  1. Employeeフォームにルックアップ項目を追加します。
    1. [ルックアップの関係の作成]ダイアログが開きます。デフォルトでは、[新しい関係] 画面が開き、フォーム間の[新しい関係]を作成することができます。既存の関係をクリックすると、既存の関係があれば表示されます。
    2. データを表示するアプリケーション、フォーム、項目を選択します。以下の画面では、Employee Manager - Department - Department Nameです。
    3. 表示タイプに、ドロップダウンラジオボタンを選びます。ドロップダウンを選択すると、データがドロップダウンメニューで表示されます。ラジオボタンを選択すると、ルックアップの項目(この場合はDepartment Name)とその隣にラジオボタンが表示されます。
    4. [完了]をクリックしてフォームにルックアップの項目を含めます。
    5. 項目のプロパティに、 ルックアップの項目名(例:Department)を指定します。
  2. Employee フォームのDepartmentのルックアップの項目には、Departmentフォームからのすべての部門が表示されます。

複数選択を利用した関係の作成

次に、(上記の例の)「従業員管理アプリ」で、従業員の役割の種類を格納するRoleというフォームを作成するとします。一般的に、従業員は複数の役割(1対多数)を割り当てられます。そこで、複数選択ルックアップ項目を使って、EmployeeフォームとRoleフォームの関係を作成します。これを実施するには、

  1. Employeeフォームにルックアップの項目を追加します。
    1. [ルックアップの関係の作成]ダイアログが開きます。デフォルトでは、[新しい関係] 画面が開き、フォーム間の[新しい関係]を作成することができます。既存の関係をクリックすると、既存の関係があれば表示されます。
    2. データを表示するアプリケーション、フォーム、項目を選択します。以下の画面では、Employee Manager - Roles - Roleです。
    3. 表示タイプ複数選択を選択します。
    4. [完了]をクリックしてフォームにルックアップの項目を含めます。
    5. 項目のプロパティに、 ルックアップの項目名(例:Roles)を指定します。
  2. Employeeフォームで、Roleのルックアップ項目は、Roleフォームからのすべての役割名が表示されます。対象のオプションを選んで、各従業員に1つまたは複数の役割の割り当てることができます。

双方向ルックアップの作成

双方向のルックアップとは、2つの関連するフォームに格納されたデータが、双方向に関連付けまたはリンクされていることです。単数選択を使った関係の作成のセクションでは、ルックアップ項目DepartmentEmployeesフォームに追加します。 Employees -> Departmentの関係性(どのように各従業員が部門に関連付けまたはリンクされているか)を作成します。このルックアップが双方向になった場合、以下の2件が行われます。

  1. 部門と各従業員が関連付けられます(Employeesフォームの 単数選択ルックアップ項目Departmentですでに実施されています)。
  2. 各部門は従業員のデータと関連付けられます。つまりDepartmentsフォームが各部門で働いている従業員の情報を表示する必要があります。

双方向ルックアップを作成するには2つの方法があります。

  1. 既存の関係を利用する
    1. 既存の関係を使ってフォーム間の関係を作成することができます。EmployeesフォームDepartment ルックアップ項目を追加すると、Employee-Departmentの関係が作成されます。
    2. Department フォームで、ルックアップ項目を追加します。ルックアップの関係の作成ダイアログで、既存の関係画面に移動し、Employee-Departmentの関係を選択します。(この関係は2つのフォームがすでに関連付けられている場合に利用できます。)
    3. 対象の項目(Department フォームに表示したいデータ)と表示タイプを選択して、 完了をクリックします。
    4. 項目のプロパティに、 ルックアップの項目名(例:Employees)を指定します。
    5. 以下のように、Departmentレポートは、各部門で働く従業員を表示します。これで、EmployeeフォームとDepartmentフォーム両方から、部門に所属している従業員の管理ができます。
    6. Employees フォームに移動する場合Departmentルックアップ項目の項目のプロパティを確認します。双方向の関係セクションで、双方向の関係チェックボックスがチェックされて表示されます。関連する項目表示タイプパラメーターは、以下に記載の通りDepartment フォームにEmployees ルックアップ項目を追加したときに設定した値を保持します。
       
  2. 双方向の関係チェックボックスをチェック
    1. 関連付けたいフォームの1つにルックアップ項目を追加します。
    2. その後、ルックアップ項目の項目のプロパティ双方向の関係チェックボックスをチェックします。
    3. 双方向のルックアップ項目の選択ダイアログが開きます。関連する項目(現在のフォームの項目)表示タイプを選択します。完了をクリックします。
    4. 他のフォームに移動します。そこに自動で追加されたルックアップ項目が表示されています。(メール項目が上の画面では選択されています。双方向の関係チェックボックスをチェックすると、SkyDesk Creatorは他の(関連する)フォームにルックアップ項目を自動で設定します。ルックアップ項目名はForm_Name - Field_Nameの形式になります。以下の画面では、SkyDesk CreatorがEmployees - Emailルックアップ項目を作成しています。)
メモ:
  • 上の画面で、部門の従業員は1対1 (1:1)の関係です。つまり、各部門に関連付けられた従業員が1人いるということです。これは、(Employeesフォームの)2つのルックアップ項目Departmentと、(Departmentフォームの)Employees を単数選択ルックアップ項目として設定することで実現しています。
  • 一般的に、各部門には多くの従業員がいて、部門と従業員の関係は1対多数 (1:M) のため、これを実現するには、 DepartmentフォームにEmployeesルックアップ項目に追加するときに、(ルックアップの関係の作成ダイアログで)表示タイプ複数選択に設定します。
  • 多数対多数(M:M)の関係を構築するには、関連付けられたフォームのルックアップ項目の表示タイプ複数選択にする必要があります。

関連フォームから統合レポートを作成

組み合わせレポートは、1つまたは複数の関連付けたフォームからのデータを表示できるレポートです。Employees、DepartmentRolesの3つのフォームを持つ(上述の)Employee Manager アプリケーションを考えてみましょう。これらのフォーム間の関係はルックアップ項目を使って作成されました。これらを元にした組み合わせレポートは、これら3つすべてに格納されたデータを1箇所で表示することができます。詳細は組み合わせレポートを参照してください。

ルックアップの表示のカスタマイズ

項目のプロパティ項目の表示 セクションを使ってルックアップ項目が表示するデータをカスタマイズすることができます。以下の画面の通り、項目を選択して、項目の値の間に区切り文字を使用する場合は記述して、どのように表示されるかをプレビューすることができます。

例えば、フォーム_Aで2種類の項目()に従業員の名前が保存されている場合、フォーム_Aに基づくルックアップを作成して、-の形式で従業員の名前を表示することができます。以下の画面で、 EmployeesDepartment ルックアップ項目が次の形式で値を表示します:Department Name - Department Head

参照元のフォームへ新規入力を追加

ルックアップ項目の項目のプロパティに、新規追加を許可のチェックボックスがあります。(参照先のフォームにあるルックアップ項目から)参照元のフォームに新規追加を設定するには、ここをチェックする必要があります。これをチェックすると、2つの追加のパラメーターリンク名配置が表示されます。

以下通り、Add Departmentsオプションがルックアップ項目に表示されます。これはEmployees(参照先)フォームのDepartmentルックアップ項目からDepartment(参照元)フォームへ新規追加するためのリンクです。

Add Departmentsをクリックすると、以下のように Department フォームが表示されます。Employees の Department ルックアップ項目への新規追加も更新されます。

参照元のフォームのレコードへのリンクを作成

ルックアップ項目に表示されたデータにハイパーリンクに設定でき、クリックすると参照元フォームのレコードを表示することができます。これを実施するには、

  1. ルックアップが追加されたフォームのレポートを選択します。
  2. レポートの設定 -> 列のプロパティを選択して、以下のようにルックアップ項目の横にあるリンクアイコンをクリックします。
  3. [リンクするビューを選択してください]のドロップダウンからレポートを選択します。
  4. 右下で関連フォームをクリックして、表示する列をドラッグ&ドロップします。
  5. これでアプリにアクセスすると、データを閲覧できます。ルックアップ項目の値は、下記のようにハイパーリンクが設定されています。

関連フォームからデータを取得

ルックアップの項目は、メインフォームでレコードのIDを検索します。このID項目を使って、関連フォームからレコードを取得して更新することができます。サンプルDelugeスクリプトについては、Fetch data from a Form and use it in another Formを参照してください。

ルックアップフィルターの設定

ルックアップ項目の項目のプロパティのフィルターの設定オプションを使って、表示されるデータを制限することができます。言い換えると、フィルターに条件を使ったり、参照元のフォームからデータを選択して表示することができます。詳細は、ヘルプを参照してください。

アプリ間のルックアップ項目の設定 - 例

他のSkyDesk Creatorのアプリのデータを取得するためにルックアップ項目を設定することもできます。サンプルアプリケーションTeachersについて見ていきます。以下の項目を含むTeachers Reportという名のフォームがあります:

  1. Student Name (一行テキスト)
  2. Student Grade (A、B、C、Dの選択肢があるドロップダウン項目)

教師はこのフォームを使って、生徒たちの成績をつけています。次に他のサンプルアプリケーションSutudentsについて見ていきます。以下の項目を含むStudents Reportという名のフォームがあります:

  1. Name (Teachers Report のStudent Name項目からのデータを表示するルックアップ項目)
  2. Grade (一行テキスト)

生徒たちはこのフォームを使い、自分の名前を入力して教師がつけた成績を確認します。例えば、教師がTeachers ReportフォームでJohnにグレードAをつけたとすると、Students Reportフォームの名前に"John"と入力すると、割り当てられた成績が自動で取得されます。これを行うには、

  1. Students ReportName項目は、 Teachers Report のStudent Name項目から取得したデータを表示するルックアップ項目になります。
  2. Teachers Report フォームで、ワークフロー > 関数 > 新しい関数に移動して、[関数の作成]をクリックします。
     
  3. ダイアログが開きます。 スクリプトを書く/サンプル関数をコピーするを選択して、次のDelugeスクリプトを追加し、[関数の作成]をクリックします。
string externalapps.GetType(int name)      //GetTypeは関数の名前です
{
     if (Teachers_Report[ID == input.name].count() > 0)      //"Teachers_Report" iはフォームリンク名です
     {
          return Teachers_Report[ID == input.name].Student_Grade;      //"Student_Grade"は項目のDeluge名です
     }
     return "";
}

Students Reportフォームで、ワークフロー > 項目セクション > 名前項目> ユーザーの入力時に移動して、以下のDelugeスクリプトを追加し、[スクリプトの保存]をクリックします。

input.Grade = teachers.externalapps.GetType(input.Name);     //"teachers"はアプリケーションのリンク名です