セルやリストビューのテンプレート行のセルには、Excelと同様に数式を設定できます。
数式を使用した場合、その計算処理はクライアント側で行われます。一方、数式フィールドを使用した計算処理はサーバー側(データベース上)で行われます。数式フィールドの詳細については、数式フィールドの作成を参照してください。
数式は、セルに直接入力することも、セル型によってはセルの既定値として設定することもできます。
セルの既定値として設定する場合、対応しているセル型は次のとおりです。なお、リストビューについては以降の説明を参照してください。
セルに直接入力する場合は、次のように行います。
注意: Forguncyの場合、数式はアプリケーションを実行しない限り計算されません。これはExcelと異なり、基本的にデータはテーブルに格納されており、アプリケーションの実行時に初めてデータがページに表示されるという動作に合わせたForguncyの仕様です。
参考: ForguncyではExcelと同様、関数を使用することができます。詳細は関数の使用を参照してください。
リストビュー内のセルを参照して計算した結果を、リストビュー内で表示するか、あるいはリストビュー外で表示するかによって、結果が変わるときがあります。
たとえば、下の図のQ3セルに設定した「=SUM(M3)」の場合、参照元であるQ3セルが参照先のセルであるM3と同じリストビュー内に存在するため、実行時に返される参照は「単価」列全体を参照するセル範囲ではなく、「単価」列にある同一行の単一セルとなります。
一方、V3セルに設定した「=SUM(M3)」の場合、参照元であるV3セルが参照先のセルであるM3が存在するリストビューの外側にあるセルとなっているため、実行時に返される参照は「単価」列全体を参照するセル範囲となります。
データの入力規則、およびコマンドから行テンプレート内のセルを参照した場合には、常にリストビューの選択行のみが返されます。これは行テンプレートよりも下の行やリストビュー全体の範囲を指定した場合であっても同様です。そのため、データの入力規則、およびコマンドでは列方向の範囲のセル参照を必要とするVLOOKUPのような関数は、事実上使用できません。通常のセルにVLOOKUP関数を使用した数式を設定し、その結果をデータの入力規則やコマンドから参照するようにすることで、そのような問題を回避することが可能です。
リストビュー内のセルでは、絶対参照を使用することで相対参照とは異なるセルが参照されます。
たとえば、下の図のQ3セルのように、「=$E$3」とE3セルを絶対参照した場合、実行時にはリストビューのすべてのQ列のセルにおいて「製品名」列の最初の行のセルが参照されます。その結果、リストビューのすべてのQ列のセルの値が「乾燥バナナ」となります。
1つのセルに、数式とデータ連結の両方を設定することが可能です。また、テキストボックス型セルなど、ユーザー入力が可能なセルに対しても数式は設定可能です。このような場合、データ連結によって読み込まれる値、数式の計算によって求められる値、そしてユーザーが入力した値のどれが適用されるかは、次のようになります。
データ連結によりそのセルにデータが読み込まれた場合、データ連結で読み込まれた値が優先して適用されます。しかし、データ連結が設定されていても、新規入力ページのようにデータが読み込まれない場合には、数式の計算結果が適用されます。
データ連結によりデータが読み込まれた状態であるかどうかに関わらず、数式の参照先のデータが変更された場合には、数式の再計算が行われるため、数式の計算結果が適用されます。
テキストボックス型セルなどユーザーが入力可能なセルで、ユーザーが値を入力した場合、入力された値が適用されます。この場合も、その後に数式の再計算が発生した場合には、ユーザーが入力した値は数式の計算結果によって上書きされます。
対象ページを表示する時点でデータ連結によるデータの読み込みがあった場合、その後の動作に関わらず画面に表示されている値がそのままエクスポートされます。
対象ページを表示する時点でデータ連結によるデータの読み込みがなかった場合、その後の動作に関わらずあらかじめ設定されている数式がエクスポートされます。
対象ページを表示する時点でデータ連結によるデータの読み込みがあった場合、その後の動作に関わらず画面に表示されている値がそのままエクスポートされます。
対象ページを表示する時点でデータ連結によるデータの読み込みがなかった場合、その後の動作に関わらずあらかじめ設定されている数式の計算結果がエクスポートされます。