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

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

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

You are not logged in.

Announcement

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


#1 2013-12-24 12:25:09

Samu
Member

レコードの詳細を別ウインドウに表示して操作したい。

どうもFMP12AdのMac版です。

ある住所録テーブルがありまして、Aウインドウには住所録に登録されているレコードをリスト表示のレイアウトで表示しています。(名前やID番号など)
そこに小窓ととてBウインドウを表示してAウインドウでアクティブなレコードの詳細(詳しい住所、電話番号など)をフォーム形式で表示させてます。

Aウインドウでアクティブレコードを切り替えた場合、Bウインドウの表示も連動して切り替えたいのですが出来ますでしょうか?

Offline

#2 2013-12-24 12:43:12

Traveller
Guest

Re: レコードの詳細を別ウインドウに表示して操作したい。

Bは別テーブル、同一テーブルの別レイアウトどちらなのですか。
いずれにしてもAテーブルにトリガを設定して関連レコード移動かな。

#3 2013-12-24 12:46:14

Layouter
Guest

Re: レコードの詳細を別ウインドウに表示して操作したい。

変数を設定[$id;ID]
エラー処理[オン]
ウィンドウを選択["B"]
If[Get(最終エラー)]
//ウィンドウがない場合新規ウィンドウ["B"]等の処理
EndIf
検索実行[ID;$ID]

AのレイアウトのOnRecordLoadトリガで実行。

#4 2013-12-24 18:57:23

Samu
Member

Re: レコードの詳細を別ウインドウに表示して操作したい。

>>#2
同一テーブルの別テーブルです

>>#3
ありがとうございます。
検索実行で分からないんですが、$idではなく$IDですか?
検索方法の詳しい設定を教えていただけますか?

因みに以下が僕が書いたスクリプトです。
ウインドウを選択["B"]
If[Get(最終エラー)]
  スクリプト実行[Bウインドウを新規で開く]
End If
関連テーブルへ移動[テーブル:住所録2※自己リレーション;現在のレイアウト]
ウインドウを選択["A"]

これをAレイアウトのトリガに設定してAウインドウで任意のレコードを切り替えてもBウインドウの表示は変わりませんでした。

Offline

#5 2013-12-24 18:57:57

Samu
Member

Re: レコードの詳細を別ウインドウに表示して操作したい。

間違えました
>>#2
同一テーブルの別レイアウトです。

Offline

#6 2013-12-24 20:09:54

Traveller
Guest

Re: レコードの詳細を別ウインドウに表示して操作したい。

超手抜きサンプル。閉じてから開くのでイライラ。
http://pupld.net/21/131224/3cp5hlegz7/index.cgi
Window.fmp12

#7 2013-12-24 20:45:56

Samu
Member

Re: レコードの詳細を別ウインドウに表示して操作したい。

>>#6
まさしく最初に作ったスクリプトです。。。画面がちらつくので出来るだけこの動作はさけたいのですが。。。
どうしたものか。。。

Offline

#8 2013-12-25 09:24:08

Traveller
Guest

Re: レコードの詳細を別ウインドウに表示して操作したい。

小窓のウインドウはいつ、どのようにして開いているのですか。

#9 2013-12-25 09:31:36

Layouter
Guest

Re: レコードの詳細を別ウインドウに表示して操作したい。

Bが他のファイルなら、関連レコードへ移動で既存のウィンドウを変更できますけど、そうじゃないと思って使わなかった。

検索実行は、条件の指定がわからなければ
検索モードに切り替え[]
フィールド設定[ID;$id]
検索実行[]
でもよい。

変数名はフィールド同様大文字小文字の区別ありません。(実際はただのtypoだけど)

#10 2013-12-25 10:01:35

チポ
Member

Re: レコードの詳細を別ウインドウに表示して操作したい。

ウインドウが開いているかの判定は
  IsEmpty ( FilterValues ( WindowNames ( Get ( ファイル名 ) ) ; ウインドウ名 ) )
でできます。

で、

If[Get(最終エラー)]
  スクリプト実行[Bウインドウを新規で開く]
End If

Ifステップの真偽の結果で選択されているウインドウが異なりますヨ

しかし、
  関連レコードへ移動
では、
現在のウインドウか新規ウインドウしか選択できませんので、
既にBウインドウが開いていた場合まずいですよね。


結果、こんな方法で、、
グローバルフィールドを作り、IDとリレーション
スクリプトの考え方
  フィールド設定[グローバルフィールド;ID]
  If[IsEmpty ( FilterValues ( WindowNames ( Get ( ファイル名 ) ) ; ウインドウ名 ) )]
   新規ウインドウ
  End If
  ウインドウを選択
  レイアウト切替
  表示方法の切り替え
  関連レコードへ移動

これでいいかと。。

Offline

#11 2013-12-25 10:48:05

Layouter
Guest

Re: レコードの詳細を別ウインドウに表示して操作したい。

チポ wrote:

If[Get(最終エラー)]
  スクリプト実行[Bウインドウを新規で開く]
End If

Ifステップの真偽の結果で選択されているウインドウが異なりますヨ

それはスクリプトの内容によるわけですが、FM12では「新規ウィンドウ」だけでその新しいウィンドウが選択されてます。
前にそうじゃないこともあったような気がしたけどFM10や11のヘルプでも特に書いてないし...
前から新しいウィンドウが手前に出てきますから、元々そうだった気もする。

非表示のウィンドウを非表示のまま選択、ってのはできないし。何だったかな。

#12 2013-12-25 11:05:37

チポ
Member

Re: レコードの詳細を別ウインドウに表示して操作したい。

ああ、
> ウインドウを選択["B"]
このステップの後でしたね、
私の判定方法の場合でした ;;

必ずBウインドウが選択されているのですから、
そのウインドウで
  関連レコードへ移動
ではまずいですよね。


> FM12では「新規ウィンドウ」だけでその新しいウィンドウが選択されてます
これは以前のバージョンから同じでしょう。

Offline

#13 2013-12-25 11:50:20

Layouter
Guest

Re: レコードの詳細を別ウインドウに表示して操作したい。

グローバルフィールドを「B」に作り、「B::ID」とリレーション
で、関連レコードへ移動でやることもできます。そういう意味かと思った。
  レイアウト切替
  表示方法の切り替え
もIfの中にした方がいいかな。

まあ、検索でもいいのでは。

#14 2013-12-25 13:51:32

チポ
Member

Re: レコードの詳細を別ウインドウに表示して操作したい。

グローバルフィールドを「B」に作り、「B::ID」とリレーション

私の提案はこの通りです。

#4の
関連レコードへ移動
ではまずいでしょう。
と言ったつもりでした。

レイアウト切替
  表示方法の切り替え
もIfの中にした方がいいかな

私の方法に対してなら、、
Bウインドウが既に開いていた場合、そのウインドウにも
こうするのが間違いないでしょう。

Offline

#15 2013-12-25 14:56:13

Samu
Member

Re: レコードの詳細を別ウインドウに表示して操作したい。

Traveller wrote:

小窓のウインドウはいつ、どのようにして開いているのですか。

最初にAウィンドウを開いたと、任意のレコードを選択(クリックでアクティブに)してからレイアウト内に設置したボタンでBウィンドウを呼び出します。

Offline

#16 2013-12-25 14:57:20

Samu
Member

Re: レコードの詳細を別ウインドウに表示して操作したい。

Layouter wrote:

Bが他のファイルなら、関連レコードへ移動で既存のウィンドウを変更できますけど、そうじゃないと思って使わなかった。

検索実行は、条件の指定がわからなければ
検索モードに切り替え[]
フィールド設定[ID;$id]
検索実行[]
でもよい。

変数名はフィールド同様大文字小文字の区別ありません。(実際はただのtypoだけど)

なるほど。大文字と小文字の区別ないんですね。ありがとうございます。

Offline

#17 2013-12-25 15:14:06

Samu
Member

Re: レコードの詳細を別ウインドウに表示して操作したい。

Layouterさん、チポさんありがとうございます。

お二人の意見を総合するとこんな感じでしょうか?

下準備
Bレイアウトにグローバルフィールドを作成してIDフィールドと自己リレーションしておく。(AレイアウトにはIDフィールド設置)

スクリプト
フィールド設定[グローバルフィールド;ID]
  If[IsEmpty ( FilterValues ( WindowNames ( Get ( ファイル名 ) ) ; ウインドウ名 ) )]
   新規ウインドウ[Bレイアウト]
  End If
ウインドウを選択[Bレイアウト]
レイアウト切替
表示方法の切り替え
関連レコードへ移動

Offline

#18 2013-12-25 16:15:23

チポ
Member

Re: レコードの詳細を別ウインドウに表示して操作したい。

If[IsEmpty ( FilterValues ( WindowNames ( Get ( ファイル名 ) ) ; ウインドウ名 ) )]

ウインドウ名は、実際のウインドウ名を正確にテキストで入力します。

新規ウインドウ[Bレイアウト]

Bウインドウでは?

後はそれでいいでしょう、
お試しください。

Offline

#19 2013-12-27 12:46:17

Samu
Member

Re: レコードの詳細を別ウインドウに表示して操作したい。

返信が遅くなりました。すいません。
無事できました。ありがとうございます。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.009 seconds, 10 queries executed - Memory usage: 561.51 KiB (Peak: 582.41 KiB) ]