FileMakerで小計のみを別テーブルにコピーする方法

日本語難しいね。
SQLでいうGROUP BYだね。
FileMakerではどうやるのか検索してみたけど出てこなかったから考えてみた。

テーブルA

テーブルAの内容は
ID:テキストor数値
値段:数値
小計:集計
小計はデータベースの集計で値段の集計。
レイアウトのパート設定で全部小計または後部承継を追加して、IDを区切りフィールドに選択。
下記はサンプルデータ。

ID値段
11000
11500
12000
11000
小計5500
21200
23000
小計4200

テーブルB

テーブルBのテーブル設定は
ID:テーブルAのIDと同じ設定
小計:数値
のみ。
あくまで例なので最小限。

ID値段
15500
24200

テーブルAからテーブルBのように小計をまとめたテーブルを作る。
すぐできるのかなと思ってたら、割とないもんなんだね。

スクリプト


ウインドウタイトルの設定 [現在のウインドウ; 新規タイトル: "テーブルA"]
新規ウインドウ [スタイル: ドキュメント; 名前: "テーブルB" 使用するレイアウト:「テーブルB」 (テーブルB)]
ウインドウを選択 [名前:"テーブルA"]
レコードのソート [記憶する; ダイアログあり: オフ] //ここはIDでソート
レコード/検索条件/ページへ移動 [最初の]
変数を設定 [$検索済ID; 値:""]
変数を設定 [$検索ID; 値:テーブルA::ID]
Loop
	If [$検索済ID ≠ $検索ID]
		変数を設定 [$検索済ID; 値:$検索ID]
		変数を設定 [$小計; 値:GetSummary ( テーブルA::小計 ; テーブルA::ID )]
		ウインドウを選択 [名前:"テーブルB"]
		新規レコード / 検索条件
		フィールド設定 [テーブルB::ID; $検索ID]
		フィールド設定 [テーブルB::小計; $小計]
		ウインドウを選択 [名前:"テーブルA"]
	End If
	レコード/検索条件/ページへ移動 [次の ; 最後まできたら終了: オン]
	変数を設定 [$検索ID; 値: テーブルA::ID]
End Loop

IDでソートして小計データを作り、GetSummaryでその小計データをレコードBに埋め込む。
一度取得したIDはそれ以降は無視。
概念としてはそんな感じ。

普通に機能としてあっていいと思う


同じテーブル上でテーブルAの小計だけ表示することはできるんだけど、CSVとかで出力することができないんだよね。
だからこういうことをしなければならないんだけど。
全銀フォーマットのデータ出力するときにテキストデータを吐き出さなきゃならないから、これを作らなければならなかったんだけど全銀フォーマットのしょうもなさと相まってかなり苦労してしまった。
備忘録として掲載。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)