対象製品とバージョン:Forguncy 4
タブコントロールは、タブコントロールが表示される時にすべてのサブページが生成されます。このため、タブをクリックしていなくともすべてのサブページの「ページロード時のコマンド…」が呼び出されます。
「ページロード時のコマンド…」でクエリーコマンドを記載する時の注意点
各サブページの「ページロード時のコマンド…」で「同一テーブル」に対するクエリーコマンドを記載しないようにしてください。
「同一テーブル」に対するクエリーコマンドを記載したい場合は、「ページロード時のコマンド…」の代わりに、各リストビューを右クリックして「クエリー条件…」から指定してください。こうすることで、指定した条件でデータを抽出し、そのリストビューに表示できます。
「ページロード時のコマンド…」でクエリーコマンドを記載する場合、テーブルが異なる場合は問題ありませんが、「同一テーブル」の場合、「タブコントロールが表示される時にすべてのサブページが生成される」という制約を受けて、初回(最初のサブページ)のクエリーのみが有効に働きます。他のサブページに記載したクエリーは、既に同一テーブルのクエリーが実行されているため実行されません。
(例)タブコントロールに「2019年」タブと「2018年」タブがあり、次のように各サブページに配置したリストビューに表示したい場合。
・「2019年」タブのページのリストビューには「テーブル1」から「2019」年のデータを抽出して表示。
・「2018年」タブのページのリストビューには「テーブル1」から「2018」年のデータを抽出して表示。
各リストビューを右クリックして「クエリー条件…」から年を条件にしたクエリーを指定することで、そのリストビューに表示するデータを抽出して表示できます。もし各ページの「ページロード時のコマンド…」で、年を条件にしたクエリーを記載すると、最初の「2019年」タブのページのクエリーのみが実行され、2019年として抽出されたレコードが「2019年」タブと「2018年」タブの両方のリストビューに表示される結果になってしまいます。
カレントレコードの注意点
サブページのリストビューを右クリックして「クエリー条件…」を記載した場合であっても、「同一テーブル」に対してのカレントレコードは、サブページでそれぞれ保持しているわけではありません。
・親ページにも「同一テーブル」と連結したリストビューがあった場合、カレントレコードは親ページとサブページで同じになります。親ページのカレントレコードが変化すると、各サブページ内のデータ連結したセルには親ページのカレントレコードの値が表示されます。
・複数のサブページで「同一テーブル」と連結したリストビューがそれぞれあった場合、他のサブページのカレントレコードが変化すると、それに連動し別のサブページのカレントレコードも変化します。このため、サブページ内のどこかに、「同一テーブル」のフィールドとデータ連結したセルがあった場合、必ずしも表示しているサブページのリストビューの値がセルに表示されるわけではありあせん。カレントレコードの値が表示されます。
複数のサブページで使用している「同一テーブル」をセルにデータ連結するときの注意点
上記のカレントレコードの制約があるため、データ連結しているセルと同じページ上のリストビューの値が、必ずしもデータ連結しているセルにそのまま表示されるわけではない点に注意してください。
カレントレコードに捕らわれずにセルに同一テーブルの値を表示するには、「=OData(〜)」といったOData関数を使用するようにしてください。ただし、OData関数には現在(4.0.106.0)、以下の不具合が報告されています。リンク先を参照して回避方法を確認してご利用ください。
複数ページで同じ位置にODataを記載した場合正しい結果を返さない場合がある
上記のOData関数を使用する方法か、あるいはタブコントロールを使わずにポップアップウィンドウで対応する方法などを検討してください。 ポップアップウィンドウの場合、カレントレコードは親ページとポップアップウィンドウのページとわけて認識されます。
これらの説明内容を確認できるサンプルを本ナレッジに添付しています。
検索キーワード: fgcinfo fgcdevelopment