0

次のようなテーブルがあります。

アプリケーション、プログラム、使用オブジェクト

次のようなデータを持つことができます。

A、P1、ZZ
A、P1、BB
A、P2、CC
B、F1、KK

表示するレイアウトを作成したい:

アプリケーション、プログラム
数 A、2
B、1

ポイントは、個別のプログラムを数えることです。

私の人生では、FileMaker でこれを機能させることはできません。各グループの後にリセットするプログラムをカウントするための要約フィールドを作成しましたが、重複したプログラムを排除しないため、次のようになります。

A,3
B,1

どんな助けでも大歓迎です。

4

5 に答える 5

1

要約フィールドを次のように作成します: cntApplicaiton = アプリケーションの数

これを行うには、定義フィールドに入り、cntApplication というフィールドを作成し、summary と入力します。オプションダイアログで、概要フィールドをアプリケーションのカウントにします

ここで、小計部分と無人で新しいレイアウトを作成します。小計はアプリケーションでソートする必要があります。Application フィールドと cntApplication フィールドを小計に入れます。ブラウズ モードに入り、アプリケーションで並べ替えると、必要なデータが得られるはずです。

数式 GetSummary(cntApplication; Application) を使用して計算フィールドを作成することもできます。これにより、レコード内のアプリケーションの総数を使用できます。

于 2013-03-11T16:11:54.433 に答える
0

私もこのフォームでデータを生成するので、私が採用した解決策は、FileMakerの2つのテーブルに入力することです。1つは概要ビューを提供し、もう1つは詳細ビューを提供します。

于 2009-07-03T13:00:58.140 に答える
0

カスタム関数 (FileMaker Pro Advanced が必要) にアクセスできる場合は、次のようにします。

ここにあるように、RemoveDuplicates 関数を追加します(これは、文字列のリストを受け取り、一意の値のリストを返す再帰関数です)。

リレーションシップ グラフで、テーブルの別のオカレンスを追加し、Application = Application リレーションシップを追加します。

次のような計算でテーブルに計算フィールドを作成します。

ValueCount(RemoveDuplicates(List(TABLE2::Program)))

各レコードには、特定のアプリケーションの個別のプログラムの数が含まれていることがわかります。ここから先は、各アプリケーションの概要を表示するのは比較的簡単です。

于 2009-07-05T22:52:14.227 に答える
0

これを行う最善の方法は、別のアプリケーション テーブルを作成することだと思います。したがって、データを指定すると、A 用と B 用の 2 つのレコードが作成されます。

したがって、Applications テーブルと既存のテーブル (これを Objects と呼びます) を追加して、一致フィールドとしての ApplicationName に基づいて、Applications から Objects (ObjectsParent というテーブル オカレンス) へのリレーションシップを作成します。アプリケーションとプログラムの両方を一致フィールドとして、オブジェクトとそれ自体の間に自己結合関係を作成します。「テーブル オカレンス」の 1 つを ObjectsParent と呼び、他の ObjectsChildren を呼びます。一意性を確保するために、シリアル番号またはその他の方法を自動入力するように設定されたオブジェクトに主キー フィールドがあることを確認してください。このIDを呼び出します。

したがって、リレーションシップ グラフには 3 つのテーブル オカレンスがあります。

アプリケーション::アプリケーション = ObjectsParent::アプリケーション

ObjectsParent::Application = ObjectsChildren::Application、ObjectsParent::Program = ObjectsChildren::Program

Objects に計算フィールドを作成し、ObjectsParent のコンテキストから計算して、次の式を与えます。

AppCount = Count( ObjectsChildren::ID )

アプリケーションで計算フィールドを作成し、使用したテーブル オカレンスのコンテキストから計算して、次の式で ObjectsParent に関連付けます。

AppCount = ObjectsParent::AppCount

Objects の count フィールドは、同じアプリケーションのすべてのオブジェクトに対して同じ値を持つため、このデータをどのオブジェクトから取得しても問題ありません。

Applications のデータをリスト ビューで表示する場合は、Applications::Application フィールドと Applications::AppCount フィールドをレイアウトに配置すると、要求したものが得られるはずです。

于 2009-08-03T10:17:56.700 に答える
0

あなたの問題は、レコードの重複と不適切なキーにあると思います。

「App_Prog」というテキスト フィールドを作成します。オプションボックスで自動入力計算に設定し、「置換しない...」オプションのチェックを外して、次の計算を使用します。

Application & "_" & Program

ここで、App_Prog を両側のフィールドとして使用してテーブルへの自己結合を作成し、これを「MatchingApps」と呼びます。

ここで、一意のシリアル番号フィールド (まだ持っていない場合) を作成し、「カウンター」と言って、各レコードに値を入力するようにします。(すべてを検索し、フィールドをクリックして、[フィールドの内容を置換...] のシリアル番号オプションを使用します)

ここで、新しい計算フィールドを追加します - 次の計算で Is_Duplicate ...

If (Counter = MatchingApps::Counter; "Master Record" ; "Duplicate")

最後に、すべてを検索し、[Application] フィールドをクリックして、[Replace Field Contents...] を使用して計算を行い、[App_Prog] の自動入力計算に値を入力させます。

これはどこに行きますか?これで、「マスター レコード」または「複製」のいずれかのマーカーである一連のレコードが作成されます。「Master Record」で検索を実行すると、(アプリケーションごとに) 要約を実行して、個別のアプリケーションとプログラムのペアを数えることができます。

于 2009-07-05T21:52:16.500 に答える