話題 18  自己Relationの活用法

(付記: 文字変換 ATOK, かわせみ)

Table内の 件数, 金額の集計値は そのままではField値として 他の操作に利用出来ません。Field設定などで, 他の数字Filedに転写しようとしても, Table全部の集計値が得られるだけです。以下に述べるように, 集計Fieldに 表示することはできます。 それは自己relationを使えば可能です。また, 自己Table内のレコードの抽出にも使えます。


A. 小計値の取得

その前に 下記のような仕入れ表で, メーカーごとの仕入れ件数, その小計を調べたい, というときの方法について整理してみましょう。(sample参照)




(a) 集計Fieldを利用する。

  1. 1.一番正統な方法は, 件数, 合計の集計Fieldを新たに定義して利用することでしょうか, 件数の集計のために 数字の1(固定)も新たにField定義します。それを集計Fieldで表示させます。

  2. 通常, この集計値を得るために Count関数, Sum関数は使えません。

  3. 2.集計Field(件数, 合計)はそれぞれ, 固定値1(sample Tableでは B214), 合計Fieldの集計として定義します。

  4. 3.レイアウトで ,メーカーFieldをソート対象とする小計パートに配置します。集計においてはこのカギとなるField=[メーカーField]をソート対象ということが重要です。

  5. 4.これをブラウズモードで [メーカーField]でソートすれば意図したことが実現します。 そのままではこの小計値はField値として 他の操作に利用出来ません




(b). 別のTableからRelationを介して 件数, 合計総額を算出する。

  1. 1.この仕入れTableと別のTabel(あるいは File: ここでは”Kensaku”)を作成します。




  1. 2.検索TableのメーカーField はテキストにして, 仕入れTableのメーカーFieldとの間でrelationを作成します。そのrelationを介して

  2. 件数Fieldは Count ( Sire::B212メーカー )

  3. 合計総額Fieldは Sum ( Sire::B240総額 )

  4. 上記のような統計関数でスマートに算出できます。


この表示には 検索Tableの レコードは1件あれば十分です。この小計値はField設定などのStepで他のFieldに転写できます。




(c) 自己relationを利用する。

  1. 実は, 同じTbale内で Count, Sum関数を利用する方法があります。

  2. 前述の 別Tableでrelationを組む方法と同じように

  3. 1.relation 定義において, 仕入れTableを複製し, 互いに同じ[メーカー]Fieldでrelationします。




  4. 2.新たに Fieldを定義する必要はありません。

  5. 件数は Count ( 自己リレSire::B212メーカー )

  6. 合計総額は Sum ( 自己リレSire::B240総額 )

  7. メーカーごとの小計値が各レコードごとに得られます。これらの値をField設定などのStepで転写,利用できます。


  8. sampleでは 上のスライドボタンを使って レコードを動かせば , メーカーごとのデータが表示されます。



(d) その他の統計関数でも使えます。

統計関数には Sum, Count以外にも Average, Max, Minなどよく使う関数がありますが, これらも自己relationを使うとスマートに算出できます。逆にこれを そのTable内だけの操作で算出しようとすると, かなり大変です。


B. 自己Relationの もうひとつの活用法

画面に表示された1件のレコードのみに Script操作を行いたい, というとき, あやまって, 複数のレコードが抽出されている状態で, そのScript操作を実行してしまうことがあります。「ちょっと,待って〜」と言いながら, 慌てて強制終了操作をしますが,  たいていは間に合いません。(^.^) そのようなうっかり誤操作の予防策として, Script実行時に, 先頭に画面の1件のみ抽出し直しすStepをおいておけばいいわけです。

(a - 1) 検索モードを使う

コピー [ D_RAWDAT::ID番号 ] [ 選択 ]

検索モードに切り替え [ ]

貼り付け [ D_RAWDAT:: ID番号 ][ 選択 ]

検索実行 [ ]

(a - 2) 変数($N)を使うと

変数を設定 [ $N; 値:D_RAWDAT:: ID番号 ]

検索モードに切り替え [ ]

計算結果を挿入 [ D_RAWDAT:: ID番号; $N ][ 選択 ]

検索実行 [ ]

でいいわけですが, なんとなく スマートでありません。自己relationを使ってみましょう。

(b) 自己relationを利用する。

まず, 自己relationを定義します。ID番号 という Field どうしで 自己relationを組みます。(画面の1件のみのレコードを抽出するには内容が重複していないFieldでrelationを定義する必要があります)

準備が出来れば, 下記の one stepの Scriptで 済みます。





この抽出は, 自己relationでなくても, 別のTableからのrelationでも同様に有効に使えます。

(話題11, 3. 関連レコードへ移動)



ATOK と かわせみ2 (Macでの話)


Windows, Mac ともに文字変換の定番, ATOK。私も10年以上 MacにATOKを入れて使ってきましたが, ときどき, 変換時の"よどみ"が気になるようになりました。「ATOK, Mac, 遅い」というキーワードの組み合わせで ネット検索してみると, 多くのサイトがヒットします。ATOKの対案として"かわせみ2"があります。ネットでは かわせみにしてから キビキビ動くようになって仕事がはかどる, というような意見があって, 思い切って 数台のMacをすべて かわせみ に変えてみなしたが, 1ヶ月使った結論は, やっぱり ATOKです。すべてもとに戻しました。

かわせみがダメなところ

  1. 1.半角アルファベットで入力した文字を 全角ひらがな, 全角漢字に変換できない。

  2. 仕事柄, アルファベットの単語混じりの日本語を使うことが多いのですが, ATOKなら, 半角英字のまま入力していって, それをそのまま英字として確定する。漢字に変換しようと思えば, そこで変換キーを押せば,漢字に変換できる, これがすごく便利に感じますが, かわせみでは, 半角英字から漢字に変換することができません。かわせみ2をやめた,これが最大の理由です。

  3. 2.入力支援方法が4種類まで, と限定的。

  4. これもちょっと不便。

  5. 3.辞書編集が, 個別の辞書ごとにできない。

  6. 辞書に単語を登録する際, 1つのユーザー辞書しか自由に編集が出来ないので, 不便。1つのユーザー辞書以外は, 編集しない辞書ととらえているようです。登録単語数が徐々に増えてゆくと, これも大きなフラストレーションになります。


しばらく かわせみ を使って見て, ATOKに比べて,変換がキビキビしている, かというと, 若干スムーズな印象を受けますが, やはり, よどむときもあり, ATOKに比べて特段すぐれている,という印象はありません。そのことよりも,上記1の理由で, ATOKを選択しました。

それとWIndows, Macに同じ辞書を使える, というメリットも大きいです。(WindowsXPまでは, 可能でした。最近のWindowsではためしていません。)