外部データベース上のテーブルやビューのコピーテーブルをForguncyの内部データベース上に作成します。このようにすることで、本来は直接的に結合できない異なるデータベース上のテーブルやビューをForguncyのビューの機能を用いて結合、集計することが可能です。なお、作成されるコピーテーブルは読み取り専用であり、更新や新規レコードの追加を行うことはできません。
本ページでは、外部データベース(SQL Server)上にある「受注実績」のビューとForguncyの内部データベース上にある「受注予算」のテーブルを用いて、次の図のような予実データを表示する場合を例として説明します。
次の図のようなテーブルを内部データベースのテーブルとして作成します。
次の図のようなビュー、またはテーブルを外部データベースのテーブルとして用意します。
今回はSQL Server上に「受注実績」という名称のビューで作成しています。
[作成]リボンタブ - [テーブル]ドロップダウンボタンをクリックし、[外部データベースからコピーテーブルを作成]を選択します。
[ナビゲーションウィンドウ]の[テーブル]ヘッダーを右クリックし、コンテキストメニューからも同様の操作を行えます。
データソースに「Microsoft SQL Server」を選択して[続行]をクリックします。
参考: 最初に「接続設定」ダイアログが表示された場合は「データソース」の[変更]をクリックしてデータソースを選択します。
「接続設定」ダイアログを設定して[OK]ボタンをクリックします。
SQL Serverへの接続については、SQL Serverへの接続を参照してください。
「受注実績」ビューを選択されたテーブルへ移動し、[OK]ボタンをクリックします。
[OK]ボタンクリック後、[固有レコード識別子の選択]ダイアログボックスが表示されるため、各行に対して一意となるフィールドをチェックし、[OK]ボタンをクリックします。
次の図のように「受注実績」という名称のコピーテーブルが作成されます。
「外部データベースからのコピーテーブル」の右ペイン「テーブル設定」では、次の設定が可能です。
プロパティ名 |
説明 |
名前 |
テーブルの名前を変更できます。 |
レコードレベルのアクセス制御 |
テーブルのレコードについて、ロールや特定のユーザーについて閲覧権限を設定できます。外部データベースからのコピーテーブルは読み取り専用であるため、許可する操作は「表示」のみです。詳細は、レコードレベルのアクセス制御を参照してください。 |
フィールドレベルのアクセス制御 |
テーブルのフィールドごとに、ロールや特定のユーザーに対して閲覧権限を設定できます。外部データベースからのコピーテーブルは読み取り専用であるため、許可する操作は「読み取り」のみです。詳細は、フィールドレベルのアクセス制御を参照してください。 |
データの同期開始時刻 |
外部データベースのテーブルのデータがコピーテーブルへと自動的に同期される開始時刻を設定します。既定は「00:00」です。なおこの自動同期処理はアプリケーション実行時にのみ行われます。Forguncy Builder上で外部データベースの最新のデータにコピーテーブルを更新するには、手動同期を行う必要があります。 |
データの同期間隔(単位:時間) |
外部データベースのテーブルのデータがコピーテーブルへと自動的に同期される実行間隔を設定します。たとえば、同期開始時刻を「00:00」、同期間隔が「20」で設定すると、00:00時から20時間間隔で同期が実行されます。単位は時間で小数点以下の値を設定することで分単位の設定も可能ですが、1分未満の値はサポートされていません。 注意:サーバーやアプリケーションの再起動または、アプリケーションを再発行すると前回の同期からの同期間隔はリセットされ「データの同期開始時刻」で設定した時刻から開始されます。 |
クエリ―条件 | 条件を設定してコピー対象のデータを限定できます。[クエリー]、[先頭レコード]、および[並べ替え]が設定可能です。 |
監査ログ |
読み取り処理が行われた際に監査ログを記録するかどうかを設定します。詳細はテーブルの監査ログ設定を参照してください。 |
[作成]リボンタブ - [ビュー]をクリックして、新しいビューを作成します。
今回は、内部データベース上のテーブルである「受注予算」とコピーテーブルである「受注実績」を結合したビューを作成します。
[ビューの作成]ダイアログで[ビュー名]を「受注予実」に設定し、[SQL文]を次の図のように設定します。
今回は、それぞれのテーブルから受注予算と受注実績、またその差額と比率を列として作成しています。
次の図のようなビューが作成されます。
ページに次の図のような「受注予実」ビューをデータソースとしたリストビューを作成します。
必要に応じて適宜書式設定や条件付き書式などを設定します。
[ホーム]リボンタブにあるデバッグの[開始]ボタンをクリックし、アプリケーションの動作を確認します。
自動同期の設定に関わらず、forceSyncTableDataメソッドを使用することで指定したコピーテーブルの同期行うことが可能です。詳細はJavaScript APIのリファレンスを参照してください。
自動同期処理はアプリケーション実行時にしか行われないため、Forguncy Builder上で外部データベースの最新のデータにコピーテーブルを更新するには、手動同期を行う必要があります。
[ナビゲーション ウィンドウ]上から対象のコピーテーブルを右クリックし、コンテキストメニューから[最新の情報に更新]を選択します。
コピー元のテーブルのデータが多い場合、クエリー条件を設定して必要なデータのみをコピーすることができます。すべてのレコードが必要ない場合や、パフォーマンス上の問題がある場合に本機能を使用することを検討してください。
コピーテーブルを開き、右ペインの[テーブル設定]にある[クエリー条件...]ハイパーリンクをクリックします。
クエリー |
[クエリー]タブで、クエリー条件を指定します。 注意:[値]はセル参照の操作が許可されていますが、セル参照を指定しても正常に動作しません。 |
先頭レコード |
[先頭レコード]タブで、取得する先頭レコード数を指定します。 |
並べ替え |
[並べ替え]タブで、表示されているテーブルの並べ替えを指定します。 |
クエリー条件を設定後、[OK]ボタンをクリックしてダイアログを閉じると、クエリー条件に基づいたデータでコピーテーブルが更新されます。
外部データベース側でテーブルスキーマを変更した場合、自動同期処理は正常に行えなくなります。そのような場合、コピーテーブルをいったん削除した後、再作成する必要があります。
同期処理は実際のコピーテーブルに直接データを上書きするのではなく、一旦一時テーブルを作成してそのテーブルに対して最新のデータを同期します。同期完了後に実際のコピーテーブルを一時テーブルで置き換える処理を行うため、同期処理中であってもコピーテーブルの参照を行うことは可能です。
大量レコードを保持するテーブルのコピーテーブルを作成した場合、同期処理に長い時間がかかりサーバーコンピューターに負荷がかかります。そのような場合次のいずれかの対応を検討してください。
同期処理の開始時刻を0時(深夜12時)などのユーザーが利用していない時間帯に設定する。
クエリー条件を設定し、レコード数を必要な件数に絞る。
大量レコードのテーブルに対して直接コピーテーブルの作成を行わず、フィールド数とレコード数を必要な件数に絞ったビューを外部データベース側で作成し、そのビューからコピーテーブルの作成を行うようにする。