1

値を計算するFileMakerスクリプトがあります。テーブルから1つのレコードがあり、そこからリレーションがテーブルのnレコードをA指します。これらのn個の関連レコードのそれぞれについてこの値を設定するための最良の方法は何ですか?BB::Field

これを行うと、n個の関連レコードの最初Set Field [B::Field; $Value]の値のみが設定されます。ただし、機能するのは次のとおりです。

Go to Related Record [Show only related records; From table: "B"; Using layout: "B_layout" (B)]
Loop
    Set Field [B::Field; $Value]
    Go To Record/Request/Page [Next; Exit after last]
End Loop
Go to Layout [original layout]

これを達成するためのより良い方法はありますか?プログラムで値(モデル)を設定する(コントローラー)ために、ユーザーがビューの変更などに気付かない場合でも、レイアウト(ビュー)を作成して切り替える必要があるという事実は嫌いです。

4

3 に答える 3

3

FileMakerは常に主にエンドユーザーツールであったため、そのすべてのスクリプトはユーザーアクションを繰り返すマクロのようなものです。プログラマー指向の環境ほど柔軟ではありません。別のレイアウトに移動することは、実際には、関連する値を操作するための標準的な方法です。たとえば、関連するレコードを複製したり、レポートを印刷したりする場合は、とにかくこれを行う必要があります。

それで:

  1. [フィールドコンテンツの置換]スクリプトステップを使用できることを除いて、スクリプトは非常に優れています。また、最初にフリーズウィンドウスクリプトステップを追加します。画面が更新されなくなります。

  2. 関連するテーブルへのポータルがある場合は、ポータルの行をループすることができます。

  3. FileMakerプラグインAPIはSQLを実行でき、この機能を公開するプラグインがいくつかあります。したがって、本当に必要な場合は、これもオプションです。

私自身、最初のバリアントを好みます。

于 2010-09-06T16:19:08.580 に答える
2

関連レコードのポータルをループする

関連するレコードがあるポータルをループしてフィールドを設定することには、[置換]または[レコードに移動]、[フィールドループの設定]に比べていくつかの利点があります。

  1. レイアウトを離れる必要はありません。ポータルがまだレイアウト上にない場合は、ポータルを非表示にするか、画面外に配置することができます。

  2. あなたはそれをトランザクションで行うことができます。IEでは、すべてのレコードが編集されるか、編集されないかを確認できます。マルチユーザーネットワークソリューションでは、レコードが常に編集可能であるとは限らないため、これは重要です。ポータルなしでレコードを置き換えたりループしたりすることは、トランザクションに対して安全ではありません。

ここにFileMakerトランザクションに関するいくつかの情報があります。

Go ToPortalRowを使用してポータルをループできます。そのようです:

Go To Portal Row [First]
Loop
    Set Field [B::Field; $Value]
    Go To Portal Row [Next; Exit after last]
End Loop
于 2014-04-15T22:33:36.760 に答える
0

値を何に使用しているかによって異なります。特定のフィールドを配線する必要がある場合、非常に正規化されたデータ構造を持っているようには聞こえません。最も簡単な方法は、格納されたフィールドの代わりにTableBで計算することです。または、これが格納されているものである場合、レコードの作成時に設定される代わりにルックアップフィールドにすることができますか?

TableBのフィールドは何にどのように使用されていますか?

于 2010-09-08T03:44:34.367 に答える