初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2017-08-04 16:16:37

FM11使用
Member

レコード検索のスクリプト

File Maker Pro 11を使用している者です。
レコード検索のスクリプトをLoopで作成する必要があるのですが、途中で止まってしまい、困っています。
長くなりますが、よろしくお願いいたします。


下記のように、複数のテーブルで共通IDを設定・互いにリレーションし、
それぞれのテーブルに必要な情報を上位のテーブルからルックアップできるファイルを作成しています。

【DBテーブル】共通ID・氏名・住所・電話番号
【テーブルA】共通ID・氏名・住所・履歴
【テーブルB】共通ID・氏名・電話番号・出欠

【DBテーブル】―【テーブルA】―【テーブルB】でリレーションされています。

この状態で下記のスクリプトを作動させると、
最後のレコードまできていないのに、スクリプトのLoopが終了してしまいます。
(Loopを外しても作動しない時がありました。)
”スクリプト一時停止”を挿入して調べたところ、
Loopが終了してしまうのは、下記の←※のタイミングでした。

ーーーーーーー
レコード/検索条件/ページへ移動[最初の]
Loop
コピー[選択;テーブルA::共通ID]
レイアウト切り替え[テーブルB]
検索モードに切り替え[]
貼り付け[選択;テーブルB::共通ID]  ←※
エラー処理[オン]
検索実行[]
If[Get(対象レコード数)=0]
  新規レコード/検索条件
  貼り付け[選択;テーブルB::共通ID]  ←※
Else
  フィールドの再ルックアップ[ダイアログなし;テーブルB::共通ID]
End If
レイアウト切り替え[テーブルA]
レコード/検索条件/ページへ移動[次の;最後まできたら終了]
End Loop
ーーーーーーー

どうも”貼り付け”が上手くいっていないようなのですが、
考えられる原因や、より良い方法を教えていただけると大変助かります。

どうぞよろしくお願いいたします。

Last edited by FM11使用 (2017-08-04 16:17:47)

Offline

#2 2017-08-04 17:29:56

tomato
Member

Re: レコード検索のスクリプト

コピーや貼付は使ったことないので、わかりませんが

1:コピーを、変数でA共通IDを取得 に変更
2:貼り付けをフィールド設定:値:変数 に変更

でも起こりますか?

Offline

#3 2017-08-04 18:27:37

FM11使用
Member

Re: レコード検索のスクリプト

tomato様ありがとうございます!

tomato wrote:

コピーや貼付は使ったことないので、わかりませんが

1:コピーを、変数でA共通IDを取得 に変更
2:貼り付けをフィールド設定:値:変数 に変更

でも起こりますか?

変数は、一度使ってみたきりなので自信がないのですが、

・コピー[選択;テーブルA::共通ID]
⇒変数を設定[$共通ID;値:テーブルA::共通ID]

・貼り付け[選択;テーブルB::共通ID]  (2か所)
⇒フィールド設定[テーブルB::共通ID;$共通ID]

に変更してみたところ、
Loopでも問題なくスクリプトが完了しました。
スクリプトが完了するまで1分半ほどかかってしまったのですが、
頻繁に使うスクリプトではないので、良しとしようと思います。

このようなスクリプトをあと2、3個使用する必要があるので、
全てで試してみたいと思います。

もしまた不具合が出てきてしまいましたら、また質問させてください。

Offline

#4 2017-08-04 22:45:22

Shin
Member

Re: レコード検索のスクリプト

スクリプトのエラーは、そのレイアウト上にそのフィールドが存在していないか、入力禁止になっているからでは。

テーブルA の情報を、他のテーブルへ移動させるルックアップの様な動きが欲しいのでしたら、IDフィールドを照合フィールドとしたインポートが簡単ですし、早いと思います。

また、リレーションを通したレコードの作成を許可しておけば、前もってレコードを作っておく必要は無く、DB テーブルの中でテーブルAの履歴とテーブルBの出欠を入力できる様に、例えばポータルで作っておけば、そこに入力するだけでレコードは自動的に作成されます。

Last edited by Shin (2017-08-05 18:10:13)

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.028 seconds, 9 queries executed - Memory usage: 509.35 KiB (Peak: 516.21 KiB) ]