みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
はじめまして。
スクリプト処理で一度別の行に飛んだ後、
変数を使って元のレコードに戻りたいのですが、
上手く行かないのでご相談させて頂きました。
テーブルA
id 数字形式
を設定
----------------------------------
変数を設定[ $$ID;値:id]
レコードへ移動[最初の]
loop
処理A
処理B
レコードへ移動[次の;最後まで来たら終了]
End loop
レコードへ移動[ダイアログなし;$$id]
------------------------------------
このような感じでテストしてみた所、上記の通りテーブルAのフィールドが「ID」1つだけなら上手く行きましたが、
複数のフィールドが定義されているケースだと上手く元のレコードに戻る事が出来ませんでした。
IDフィールドをキーにしたいという事を設定しなくては駄目なのかと思い、
End Loopのあとにフィールドへ移動でIDフィールドに移動してみたり、最終行を
レコードへ移動[ダイアログなし;ID=$$id]
などとしてみましたが、上手く行きませんでした。
環境はWinxp、FMP11です。
よろしくお願いします。
>複数のフィールドが定義されているケースだと
ここが良く分からない。
Get(レコードID)を使ってみてはどうですか。
ご返信ありがとうございます。
Get(レコードID)を使っても結果は同じで、カーソルは最終行に残ったままでした。ちなみに、
-------------------------------
変数を設定[ $$ID;値:id]
カスタムダイアログを表示[$$ID]
レコードへ移動[最初の]
loop
処理A
処理B
レコードへ移動[次の;最後まで来たら終了]
End loop
カスタムダイアログを表示[$$ID]
レコードへ移動[ダイアログなし;$$id]
------------------------------------
のように、変数に正しい値が入っているかを
変数設定直後とレコード移動直前に表示させてみたところ、正常な値が入っていました。
>>複数のフィールドが定義されているケースだと
>ここが良く分からない。
失礼しました。テーブルAに存在しているフィールドが「ID」だけだと上手くいくのですが、
他にも複数のフィールドが存在している状況だと失敗する、という意味になります。
変数を設定[ $$ID;値:id] ではなく
変数を設定[ $$ID;値:Get ( レコード番号 )] にする。
ただし処理A、処理B中に対象レコードが変化しない事。
Get(レコードID)じゃなくGet(レコード番号)でしょう。
新規ウィンドウ
処理
ウィンドウを閉じる[現在の]
にすれば簡単かも。
もう一つの方法
グローバルフィールドを作り、
それとレコードIDとでリレーション。
グローバルフィールドにレコードIDを入力、
関連レコードへ移動
でそのレコードが選択されます。
レコード順が変わっても問題有りませんね。
Offline
みなさん、ご回答ありがとうございます。
barikanさんの方法で試したところ、無事成功しました。
チポさんみたいなやり方もあるんですね。勉強になります。
ありがとうございました。
そのスクリプト処理で対象レコードは変わらないのかな。
私も普通はチポさんの方法を使います。
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 559.13 KiB (Peak: 583.26 KiB) ]