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

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

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

You are not logged in.

Announcement

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


#1 2017-09-05 17:29:24

jun1
Member

チェックボックスの値を取り出したい

お世話になっております。
Win8、FM13を使用しています

ひらめいたことを実行したくてご教授いただけたら助かります。
テーブルが二つあります。

Aテーブル(1人1レコード)
名前、日付などのフィールドの他
メニュー一覧というチェックボックスを作りました。
(おにぎり、チャーハン、サンドイッチ、ハンバーガー、ホットドッグ)

Bテーブル(1メニュー1レコード)
名前、日付、メニューなどのフィールドがあります。

名前と日付でリレーションを組んでいます。

例えば、Aテーブルでおにぎりとハンバーガーにチェックを入れたら
Bテーブルでメニューフィールドにおにぎりが自動入力されたレコードと同じくハンバーガーのレコードを
1つ1つ新規作成するスクリプトを考えています。
getvalueやvaluelistitemsなど使ってみたのですが
どうにもうまくいきません。

初心者でもできそうな方法がありましたら教えてください。
よろしくお願いします。

Offline

#2 2017-09-06 09:15:14

チポ
Member

Re: チェックボックスの値を取り出したい

スクリプトトリガを使って、
チェックボックスをチェックするたびにそのメニューのレコードを作る。

ができますが、
一度入れたチェックを消したときにそのレコード削除が面倒です。

全部チェックを入れ終わった後に、
例えば
「確定」フィールドをチェックする
などの動作を入れることは可能でしょうか?

Offline

#3 2017-09-06 10:04:38

jun1
Member

Re: チェックボックスの値を取り出したい

「確定」フィールドをチェックする
などの動作を入れることは可能でしょうか?

もちろん可能です!
チェックを外した時の削除を考えていませんでした。ありがとうございます

値一覧に作った確定にチェックを入れたらスクリプトが実行されるということでしょうか???

すると、確定後に値をカウントして一行ずつ取り出し、カウントと同じ数の行を取り出したら
スクリプト終了という感じになるでしょうか?

Offline

#4 2017-09-06 13:15:35

チポ
Member

Re: チェックボックスの値を取り出したい

> 値一覧に作った確定にチェックを入れたらスクリプトが実行されるということでしょうか
値一覧ではなくて、フィールドをボタンにしてもいいでしょう。
それらのアクションでスクリプトを実行させます。

> 確定後に値をカウントして一行ずつ取り出し、カウントと同じ数の行を取り出したら
> スクリプト終了という感じになるでしょうか

それでいいでしょう。

ポータルを作ってその新規行に入力か、
関連テーブルに移って新規レコード作成・入力。
どちらでもいいですが、ポータルの方がスクリプトが簡単ですね。

スクリプトを考えてみてください。


「確定」
としないとそのレコードから出られない工夫が必要かもしれませんね。

Offline

#5 2017-09-06 16:20:39

Shin
Member

Re: チェックボックスの値を取り出したい

「おにぎり」という値一覧を作っておき、それを肝鎌テーブルがわのフィールドにチェックボックスとして設定しておきます。それをチェックすれば、レコードを作れますね。
チェックを外すと、そちら側のレコードの種別フィールドが空白になるので、業務終了時にそのレコードをまとめて削除しておく、という処理でいいでしょうね。

Offline

#6 2017-09-06 16:43:24

チポ
Member

Re: チェックボックスの値を取り出したい

Shinさん
それでは関連コード一つ作れるだけでは。

Offline

#7 2017-09-06 17:16:50

Shin
Member

Re: チェックボックスの値を取り出したい

勘違いしてしまった。それぞれの綱目ごとのフィールドも作ってリレーションをはらないとダメですね。却ってややこしくなってしまいます。
ということで、ボツ。

Offline

#8 2017-09-06 17:32:15

jun1
Member

Re: チェックボックスの値を取り出したい

返信ありがとうございます。

Bestかどうかわかりませんが
アカウントとパスワードで管理しているので(それを先に書けばよかったですね)
ログアウト時に作動するように
カウント値を変数にしてLoopを使ってスクリプトを作ってみました。
思った通りの動きをしてくれたのでとりあえずクリアになりましたが

チポさまがおっしゃったようにポータルでメニュー側を表示させて
ポータル行から新規レコードを考えてみました
メニューはドロップダウンリストで値一覧を表示になりますか?

Offline

#9 2017-09-06 18:13:33

チポ
Member

Re: チェックボックスの値を取り出したい

私が書いたのは、
Aテーブルのメニュー一覧のチェックボックスに入力は同じです。

その入力された値を一つずつポータルの新規行に入力することで
照合フィールドが入力された関連レコードが自動的に作られます。

これをするためには、
リレーションの設定で、レコード作成に許可を与えます。

Offline

#10 2017-09-06 20:18:13

mic
Member

Re: チェックボックスの値を取り出したい

見当違いかもしれませんが、こんなのはどうでしょう。

Aテーブル
・名前
・日付
・メニュー一覧

Bテーブル
・名前
・日付
・メニュー
・選択 ※追加

Mテーブル
・メニュー
・g名前 ※グローバル
・g日付 ※グローバル

リレーション
「Aテーブル::メニュー一覧」×「Mテーブル::メニュー」

「Mテーブル::g名前」=「Bテーブル::名前」
and「Mテーブル::g日付」=「Bテーブル::日付」
and「Mテーブル::メニュー」=「Bテーブル::メニュー」
※Bテーブル側の作成を許可


「Mテーブル::メニュー」に、おにぎり、チャーハン、サンドイッチ、ハンバーガー、ホットドッグなどを1レコードに一つずつ登録

AテーブルのレイアウトにMテーブルのポータルを配置し、以下のフィールドを表示します。
・「Mテーブル::メニュー」
・「Bテーブル::選択」(チェックボックスで値一覧「1」)

Aテーブルのレイアウトでレコードを表示したとき、または名前か日付を入力したとき、
・「Mテーブル::g名前」に「Aテーブル::名前」をコピー
・「Mテーブル::g日付」に「Aテーブル::日付」をコピー
しておきます。

この状態でポータルの「Bテーブル::選択」にチェックを入れると、Bテーブルに名前、日付、メニューがコピーされ、選択に1が入力されたレコードが作成されます。
チェックを外しても選択が空になるだけでレコードは残るため「選択=1」で絞り込む必要はありますが、作成の手間は結構少ないのではないかと思います。


Aのメニュー一覧は×で接続しているのでMテーブルのレコードが全て表示されてしまいますが、
「Aテーブル::メニュー一覧」=「Mテーブル::メニュー」
に変更してメニュー一覧に表示させたいメニューのリストを入力しておけば、ポータルに表示するメニューも制限できます。

Last edited by mic (2017-09-06 20:23:20)

Offline

#11 2017-09-07 11:57:01

Hiro
Member

Re: チェックボックスの値を取り出したい

Aテーブルに「メニュー」データをダブって持たせる構成が、
そもそもDB正規化上からも問題であって、

Aテーブルの「メニュー」チェックボックスフィールドを止めて、
普通に、

ポータルから関連レコードの新規作成、および削除ができるようにし、
ポータルに1つだけ配置した関連フィールド「Bテーブル::メニュー」に、
ポップダウンメニュ一覧から1行づつ直接入力(あるいは削除)するのが、

定石的最善策でないかしら。

Last edited by Hiro (2017-09-07 12:01:02)

Offline

#12 2017-09-07 12:03:27

チポ
Member

Re: チェックボックスの値を取り出したい

私もHiroさんの考えと同じなんですが、
値一覧を、
選択されたものをリストから外さないと同じものを選択される恐れがありますよね。

この方法もあるのですが、
「初心者」と書かれているのでハードルが高いかなと。。

で、とりあえずの回答をしています。

Offline

#13 2017-09-07 15:08:23

jun1
Member

Re: チェックボックスの値を取り出したい

皆さま、ありがとうございます。

ポータルはあまり使ったことがなく(ほぼ初めて)
興味があるというか、ちょっと挑戦してみたいのです。

Hiroさんの案は私の先述と理解してよいでしょうか?
関連テーブルにするためのリレーションのkeyフィールドの入力について
スクリプトを考える時間が必要かなぁ・・・頑張って考えてみます。

チポさんのAにメニューのチェックボックスをおいてとなると
ポータルで何を表示させたらよいですか?
すみません、イメージがつかめないのでもう少し詳しく教えていただけませんか?

Offline

#14 2017-09-07 17:11:04

チポ
Member

Re: チェックボックスの値を取り出したい

私のレスは、

1 Aテーブルでメニュー一覧を選択
2 「確定」する
3 スクリプトで、ポータルの新規行に、メニュー一覧の値を一つずつ入力
というものです。


ポータルに必要なフィールドは、必須ではなく、
フィールドがなくても
フィールド設定ステップでスクリプトはちゃんと動きます。

しかし、
Bテーブル::メニュー
位は置いておいた方がいいでしょう。

Offline

#15 2017-09-07 19:03:25

Hiro
Member

Re: チェックボックスの値を取り出したい

> #11 説明内容を実装した設定サンプルをアップしましたので、参考ください。

メニュー数が少なく視認も可能なので、重複入力の恐れは少ないと思われ、
たとえミスった場合でも削除も可能なので、特に重複回避機能は非装備です。

●サンプル「関連レコード作成.fmp12」 → https://yahoo.jp/box/iTGO4M

Last edited by Hiro (2017-09-07 19:52:23)

Offline

#16 2017-09-08 13:49:10

jun1
Member

Re: チェックボックスの値を取り出したい

Hiroさま

サンプルありがとうございました。
こんなに簡単な仕組みでできるんですね!
ポータルからの新規レコード作成はリレーションのキーになるフィールドに
値が入力されて、リレーションが成立して初めて機能するものだと勘違いしておりました。

なので、ポータル行がアクティブになったときに
日付はともかくB側の名前をスクリプトで自動で入力する方法を考えていました・・・
(この場合、日付と名前でリレーションだったので)

チポさんの方法でも試作してみます。面白いものが出来そうな気がしてきました。

一つの答えに対してアプローチ方法は何通りもあってとても面白いです。
今回もたくさん勉強させていただきました。
みなさま、お忙しいところ本当にありがとうございました。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 7 queries executed - Memory usage: 609.34 KiB (Peak: 626.24 KiB) ]