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

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

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

You are not logged in.

Announcement

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


#1 2013-10-18 17:02:35

たき
Member

リレーションを使ったレコードの作成方法

win7
FM12 advance

以前合計計算から個別勘定(割勘)をする方法を教えていただきました。結果(例として)Aランチ2こ、Bランチ2個で個別勘定を押すとAランチ1、Aランチ1、Bランチ1、Bランチ1と分解され計算できたのですが、いろいろ進めていくと個別勘定した時にその支払回数が2回あり方法が1番目の人が現金、2番目の人がカード払いで設定しても1番目の現金としか支払い方法が選択されず、やり方を変えてみました。

現在のテーブルの状況(簡略しています)
********        ********       ********
   main                 sell                   code
********        ********       ********
伝票コード  ーーー 伝票コード 
             商品ID  ーーーー 商品ID

となっておりcodeは商品、sellは売上となっています。これを
********           ********      ********        ********       ********
    code2                精算sell           main                 sell                   code
********           ********      ********        ********       ********
                       伝票コードーー□ーー   伝票コード  ーーー 伝票コード 
商品IDーーーーーー   商品ID                                  商品ID  ーーーー 商品ID

とやり、通常計算ならインポートで精算sellへ移動し精算する。割勘をする場合に割勘レイアウトを作ってsellから精算sellへ数量を1ずつ移動して計算すると考えてみました。
精算sellとmainの間の□のところはこのレイアウトを利用して精算sellでのレコードの作成を許可にチェックしております。
実際に個別勘定を押した時にmainをレコード表示としてsellと精算sellをポータル表示しました。code2と精算sellのリレーションも間違っていると思うのですが、数量だけはとりあえずsellから精算sellに移動できています。しかし他の商品を移動させようとすると先に移動したところへ数量が増えていく感じになります。ずーっと考えていて毛が1分間にに1本1本抜けていく気分です。教えていただけませんでしょうか?現状を説明しているつもりですが不備があればすいません。

Offline

#2 2013-10-18 17:07:02

himaganee
Guest

Re: リレーションを使ったレコードの作成方法

精算sellポータル内の最終行(新規作成の空行)へ移動してないのでは。

#3 2013-10-18 22:02:45

たき
Member

Re: リレーションを使ったレコードの作成方法

himaganeeさんご連絡ありがとうございます。精算sellポータル内の最終行へ移動のアドバイスありがとうございます。今長くFMを触ることができませんので明日にでも挑戦してみます。お礼まで。

Offline

#4 2013-10-19 07:30:11

たき
Member

Re: リレーションを使ったレコードの作成方法

昨日コメントを残したのですがいつの間にかタグが勝手に解決になっていました。まだこのサイトでの使用が不慣れですいません。因みに解決表示を変更できない状態です。

Offline

#5 2013-10-20 07:37:18

たき
Member

Re: リレーションを使ったレコードの作成方法

最終の行に移動するにしても1行目だけが変わってしまう現状です。移動したいレコードがポータルに表示されていて(例えば商品名・単価・数量)それもポータル表示されている中で2行目を移動しようとしても1行目の物が移動するかんじです。

Offline

#6 2013-10-20 08:04:44

himaganee
Guest

Re: リレーションを使ったレコードの作成方法

ああ、両方ポータルなら同時に指定行に移動した状態にはできませんから、
移動元の情報を全部変数に入れてから移動先を最終行にするか、
移動元はGetNthRecord(移動元のポータル::フィールド)を使います(ポータルフィルタを使ってるとだめ)

#7 2013-10-21 09:57:42

sorter
Guest

Re: リレーションを使ったレコードの作成方法

>通常計算ならインポートで精算sellへ移動し精算
これがややこしくなる元では?
いちいちレコードを複製しないで、sellのレコードに支払い方法を記入していった方が簡単のように思います。

#8 2013-10-21 16:29:33

たき
Member

Re: リレーションを使ったレコードの作成方法

himaganeeさんご連絡遅くなりすいません。またヒントいただきありがとうございます。いつもながら現在仕事中ですのでお礼まで。後ほど試してみます。ありがとうございます。

Offline

#9 2013-10-21 16:44:18

たき
Member

Re: リレーションを使ったレコードの作成方法

sorterさんご連絡いただきありがとうございます。sorterさんが仰るようにsellのところで現金・カードで区別してやっておりましたが、私の足りない知恵の中では例えば伝票コードがあり1レコードを作成しその明細(ここでいうsell)がAランチ2、Bランチ2というふうにあると仮定しここで精算するときにはこのまま10,000円であればそのまま10,000円で区分が現金とかカードと出来ると思うのですが、これを個別会計した場合、1人がAランチを1つカード払いで精算し、残りのAランチ1、Bランチ2をもう一人の人が現金で全部精算した場合、現金払いまたはカード払いが何回あったのかうまく計算できないということと、例えばお客さんが後で伝票を持ってきて訂正を求められた時の対処が難しいと考えていろいろやりながらアドバイス頂いています。

Offline

#10 2013-10-22 13:35:45

たき
Member

Re: リレーションを使ったレコードの作成方法

himaganee wrote:

ああ、両方ポータルなら同時に指定行に移動した状態にはできませんから、
移動元の情報を全部変数に入れてから移動先を最終行にするか、
移動元はGetNthRecord(移動元のポータル::フィールド)を使います(ポータルフィルタを使ってるとだめ)

お世話になります。今sellのポータル行のところでボタンを創り以下の用にスクリプトを作成してみましたがGetNthRecordの利用方法がどこで設定するのかよくわかりません。
変数を設定[$$LINE;値:GetNthRecord(sell::商品ID; sell::明細番号)]
ポータル内の行へ移動[選択;ダイアログなし;$$LINE]
レイアウトの切り替え[「精算sell」(精算sell)]
ポータル内の行へ移動[選択;最後の]
次のシリアル値を設定[精算sell::商品ID; $$LINE]
フィールド設定[精算sell::数量;1]
フィールド設定[sell::数量;sell::数量-1]
レイアウト切り替え[元のレイアウト]
レコードの・検索条件確定[]

としてみたのですがうまく動きません。申し訳ございませんが詳細を教えていただけませんでしょうか?

Offline

#11 2013-10-22 15:01:53

himaganee
Guest

Re: リレーションを使ったレコードの作成方法

レイアウトにポータルが2個あるわけじゃないんですね。

次のシリアル値を設定、はフィールドオプションの変更ですから、使いません。

sell::数量を-1してますけど、変更したら注文内容が分からなくなってしまうでしょう。

1人がAランチを1つカード払いで精算し、残りのAランチ1、Bランチ2をもう一人の人が現金で全部精算した場合、金払いまたはカード払いが何回あったのか
これを現金3+カード1でなく、両方1にしたいなら、清算テーブルは商品でなく支払番号とかで1レコードにしないといけないでしょう。

#12 2013-10-22 15:42:28

たき
Member

Re: リレーションを使ったレコードの作成方法

ご連絡ありがとうございます。自分の中ではsellのポータルと精算sellのポータルを2つ用意しsellのポータルの中に例えばAランチ2個、Bランチ2個とあり、精算する商品のボタンを押すと精算sellに移動し移動し、sellの数量が0になったら最初のページに戻るというようにするというのが自分の考えでしたが随分とずれているようです。基本的な方向性としたらどのように持っていけばよいのでしょうか?

Offline

#13 2013-10-22 16:07:02

himaganee
Guest

Re: リレーションを使ったレコードの作成方法

移動し、sellの数量が0になったら
でなく、
複製し、sellの数量と同じになったら
にすれば、安全と思いますけど。

別のテーブルにしないで、支払済フラグを立てる方が普通では。フラグの有無をポータルフィルタにすれば、同じリレーションで両方作れますよね。

支払回数の件は?

#14 2013-10-22 17:38:34

たき
Member

Re: リレーションを使ったレコードの作成方法

ご連絡ありがとうございます。自信がないのですが少しイメージできたようなきがします。複雑すぎて支払回数の件わすれてました。自分なりに整理してみるとsellテーブルを”+”を押してsell2を作成する。仮に支払テーブルを作成し支払IDフィールド、伝票コード、支払区分フィールドを作成、mainの伝票コードと支払テーブルの伝票コードとリレーションを貼る。mainテーブルの伝票コードとsell2の伝票コードでリレーションを貼ると言うようなリレーションになるのでしょうか?間違っていたらご指摘おねがいします。

テーブル;  支払         main           sell
フィールド;  支払ID   
        伝票コード   伝票コード   伝票コード
        支払区分


テーブル;  main         sell2
フィールド; 伝票コード   伝票コード
       

計算方法はレイアウトを作成するときにレコードを表示するのは支払テーブルとなるのでしょうか?ここからsellのポータルsell2のポータルを表示して・・・ここから先がまだ未知なのでリレーションからご指導お願いできますでしょうか?

Offline

#15 2013-10-23 19:05:09

たき
Member

Re: リレーションを使ったレコードの作成方法

現在いろいろ悩みながらやっているのですが、himaganeeさんが仰っている内容について考えてみるとsell2はいらないことでしょうか?sellのポータルを2つ用意しそれぞれにフィルタをかけて移動しながら計算するのかとも考えてみたのですが、うまくいかないことに気づいたところです。以前GetNthRecordを使うことを伺ったのですが、どの場面でどう使うかがわからない状況です。頭の整理ができなく質問が多くすいませんが教えていただけませんでしょうか?

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 553.55 KiB (Peak: 574.09 KiB) ]