みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
ファイルメーカー13を使っていますが、
表示されているレイアウトによってスクリプトステップを分岐させたいと思います。
get(レイアウト名)やレイアウト番号は名称や並び順で変わることがあり不安定なので
get(レコードID)のようなレイアウトごとにユニークな関数ってないのでしょうか?
デザイン関数にレイアウトIDもあるけれど、レイアウト名やレイアウト番号でしか切り替えられないので、意味なさそう?
取得関数ではレイアウトIDを得られないですね。
アクセス権でレイアウト名とか番号の変更を制限すれば勝手に変更されることは防げますよね。
Offline
できそうで完璧にはできないのですね・・・
アクセス権での制限での対応は、開発者が変更してしまうのを防げず自分の記憶があてにならないため
それでの対応は難しそうです。
「レイアウト名や順序を変えてはならない」というルールが自分自身ピンとこないので・・・覚えていられる自信がありません(T_T)
LayoutIDs ( Get ( ファイル名 ) ) と LayoutNames ( Get ( ファイル名 ) ) では、取得できる順がその時点でのレイアウトの順の様です。
同じレイアウト名が無い、という前提で、レイアウトIDで指定して、レイアウト名へ変換して、レイアウト移動、という方法がとれると思います。
例えば、カスタム関数で
LayoutID2Name ( LayoutID ) =
Let (
[
IDList = LayoutIDs ( Get ( ファイル名 ) ) ;
NameList = LayoutNames ( Get ( ファイル名 ) ) ;
pos = ValueCount ( Left ( IDList ; Position ( ¶ & IDList & ¶ ; ¶ & LayoutID & ¶ ; 1 ; 1 ) ) )
] ;
GetValue ( NameList ; pos )
)
で良いでしょうが、adv 版で無ければ、同様の式を、レイアウトへ移動 の中に組み込むといいでしょう。
Let (
[
LayoutID = 1 ; // この数値を、求めたい レイアウトID に設定
IDList = LayoutIDs ( Get ( ファイル名 ) ) ;
NameList = LayoutNames ( Get ( ファイル名 ) ) ;
pos = ValueCount ( Left ( IDList ; Position ( ¶ & IDList & ¶ ; ¶ & LayoutID & ¶ ; 1 ; 1 ) ) )
] ;
GetValue ( NameList ; pos )
)
Last edited by Shin (2016-03-17 22:34:09)
Offline
レイアウトIDなんかで指定しちゃったら、
ファイル破損等で作り変える必要が出てしまった時に死にますよ。
レイアウトIDを任意に割り当てることは出来ませんから。
各レイアウトのいずれかのオブジェクトに固有のオブジェクト名つけて、
スクリプトステップ
オブジェクトへ移動
でエラーを返すか否かでそのレイアウトを特定できますね。
オブジェクト名を変えられたらどうするの?
って言われたらどうしようもないですが ;;;
Offline
Pages: 1
[ Generated in 0.004 seconds, 7 queries executed - Memory usage: 508.09 KiB (Peak: 514.7 KiB) ]