ファイルメーカーProの疑問質問
|
【状態】 完了
【私の独断意見】
コピー、カット、ペーストの操作では、繰り返しフィールド内の複数のフィールドを指定できません。繰り返しの数だけ操作をしてください。
【勝手なアドバイス】
今、流行のデータベースの考え方に、リレーショナルデータベースが有ります。ファイルメーカーでも、この考え方を前面にだしているようです。このリレーショナルデータベースの設計条件の一つに、「レコード中に繰り返しを可能な限り使わない」があります。実は、「リレーション」の「ポータル」が「繰り返しフィールド」の代わりに使えます。この「ポータル」には、「繰り返し」より多くの「スクリプトステップ」が用意されています。
【マニュアルのどこに書いてある】
【ファイルメーカさんへ一言】
【状態】 完了
【私の独断意見】
以下に示すような、5回の繰り返しがあるフィールド〈R1〉と〈R2〉を持つデータベース〈test.fmj〉がある。
このデータベースで、フィールド〈R2〉から〈R1〉にデータをコピーするスクリプト〈S1〉と〈S2〉を示します。
【スクリプトS1】
最も単純なスクリプトです。繰り返しの数が少ない時便利です。
【スクリプトS2】
繰り返しの数が多い時便利なスクリプトです。
【状態】 作成中
【私の独断意見】
繰り返しフィールドの任意の要素に値を設定することは困難です。なぜなら、値を設定するスクリプトステップでは、繰り返しフィールドのフィールド名と繰り返しフィールド内の要素位置を明記する必要があります。さらに、このスクリプトは実行時にそれらを変数のように指定できないからです。
値を設定する繰り返しフィールドが予め決まっている時は、以下のスクリプトで擬似的に可能です。以下にサンプルを示します。
【サンプルデータベースの定義】
〈R1〉値を設定する繰り返しフィールド
〈C〉カウンタ
〈N〉値を設定する繰り返しフィールド内の要素の位置を指定するフィールド
〈S〉繰り返しフィールドに設定する値を格納するフィールド
【スクリプト】
このスクリプトは、繰り返しフィールド〈R1〉内のフィールド〈N〉で指定された要素の位置に、フィールド〈S〉の値を設定します。
【ファイルメーカーのマニュアルのどこに書いてある】
【ファイルメーカさんへ一言】
【文書の状態】 作成中
【キーワード】
【課題の詳細】
【参考になりかもしれない情報】
【解決方針】
【私の独断的意見・解決案】
値の設定方法一覧
繰り返しフィールド内のフィールドに値を設定する時に、指定可能な個所と位置を表にしました。
手段 | 指定可能場所 | 繰り返し内の位置指定 | |
手動 | ペース | 1箇所 | |
スクリプト | 貼り付け | 1箇所 | スクリプト中に固定指定 |
フィールド設定 | 1箇所 | スクリプト中に固定指定 | |
テキストを貼り付け | 1箇所 | スクリプト中に固定指定 | |
計算結果を貼り付け | 1箇所 | スクリプト中に固定指定 |
問題点として、繰り返しフィールドと繰り返しフィールド内のフィールド位置が動的に指定できないことがあげられます。
各フィールドの設定状況が下記の表のような状態の時、各スクリプトステップの実行結果を示します。
[表 各フィールドの設定状態]
フィールド名 |
繰り返しの有無 |
R1 |
あり |
R2 |
あり |
S |
なし |
スクリプト | 実行結果 | 備考 |
フィールド設定[ 「R1」, 「R2」] | R1の1番にR2の1番の要素の値が設定される | @1番以外の繰り返し位置は変化無し |
フィールド設定[ 「R1」-m, 「R2」] | R1のm番にR2のm番の要素の値が設定される | @mがR2の範囲を超えると""が設定される Amはスクリプト中に固定した数字で指定するので、変数のようにスクリプト実行時に変更することは出来ません |
フィールド設定[ 「R1」-m, 「S」] | R1のm番にSの値が設定される | mはスクリプト中に固定した数字で指定するので、変数のようにスクリプト実行時に変更することは出来ません 参照 |
フィールド設定[ 「R1」, 「Getrepetition(R2,n)」] | R1の1番にR2のn番の要素の値が設定される | @n<1かnがR2の範囲を超えると""が設定される Anにはフィールド名が指定出来るので、そのフィールドを変数のように利用すると、スクリプト実行時にnの値を変更することが出来ます |
フィールド設定[ 「R1」-m, 「Getrepetition(r,n)」] | R1のm番にnull値「""」が設定される | バク?! |
フィールド設定[ 「R1」, 「Last(R2)」] | R1の1番にR2の最後の要素の値が設定される | |
フィールド設定[ 「R1」-m, 「Last(R2)」] | R1のm番にnull値「""」が設定される | バク?! |
計算結果を貼り付け[*****] | フィールド設定と同じ |
課題点
【メーカーのマニュアルのどこに書いてある】
【メーカーさんに一言】
【サンプル】
|質問一覧へ|
copy right 2003 H.Ishii ニットマイコン研究会