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

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

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

You are not logged in.

Announcement

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


#1 2019-03-10 08:50:38

ozmas
Member

見積書テーブルから納品請求書テーブルへのレコードの追加書き出しの方法

見積書と納品請求書を作っているのですが、見積書テーブルにリレーションする見積書行テーブルを作り、見積書テーブルのレイアウトにポータルで見積書行テーブルを配置して入力出来るようにつくりました。
このレイアウト上に「納品請求書データ作成ボタン」を作成して、そのボタンを押すと見積書のレコードとともに見積書行の複数レコードが別に作成してある納品請求書テーブルと納品請求書行テーブルに追加されるようにしたいのですが、方法が今ひとつわかりません。
スクリプトで対応するつもりなんですが見積書テーブルのレイアウト上から他のテーブルのレコード作成などの操作が出来るのか?またその場合

まず納品請求書テーブルに新規レコードを作成
見積書レーブルの今表示しているレコードから必要なフィールドの値を今作成した納品請求書テーブルのレコードのフィールドにコピー
レコードを書き込みを確定する(処理方法も不明)
ループを使って
   納品請求書行テーブルに新規レコードを作成
   見積書行テーブルから対象のレコードのフィールドを作成した納品請求書行テーブルのレコードの対象行にコピー
   なんらかの方法で書き込みを確定
行数分だけ繰り返す
こんな感じだと思うんですが、具体的な方法がわかりません。どなたかご教授よろしくお願いいたします。

Offline

#2 2019-03-10 16:23:57

Shin
Member

Re: 見積書テーブルから納品請求書テーブルへのレコードの追加書き出しの方法

見積書行テーブル は、明細行 のテーブルでしょうね。
見積もりの内容がそのまま納品、請求書の明細になるのでしたら、その明細テーブルに、納品書番号を持たせるフィールドを作るのみでいいでしょう。
もっと簡単に作るには、納品テーブルには、納品・請求番号と見積番号を持たせるのみにして、見積もりの内容をそのまま使ってしまう、という方法もあります。
それも面倒なら、見積書テーブルに納品書番号を設定するフィールドを作り、それがあればそのまま納品書とみなす、のような運用も可能です。

Last edited by Shin (2019-03-10 17:08:57)

Offline

#3 2019-03-10 23:27:58

ozmas
Member

Re: 見積書テーブルから納品請求書テーブルへのレコードの追加書き出しの方法

早速の回答ありがとうございます。見積行はおっしゃるとおり明細行です。通常なら見積と納品請求は同じ物で良いのでそのやり方で良いのですが、今回はお客様へ渡した見積は後ほど確認する事があるのでそのままにロックしておいて、実際の納品書は見積書の内容を元にお客様からの発注書に合わせて変更出来る仕様になっているのでどうにかしてレコードをコピーしたいんです。
うんうんうなりながら考えてますが、見積テーブルから納品請求テーブルへは納品請求テーブルから見積テーブルへリレーションを作成しておいて、リレーションキーを含む各フィールドの値を変数に格納しておいて、新規レコードを追加してから各変数をフィールドに代入すれば出来るかなと思ったんですが、その後で明細行同士をループでコピーする手順が今ひとつわかりません。もしかするとループの中でいちいちレイアウトを切り替えてやるのかなとも思うんですが、まだまだ慣れていないんで頭がいたいです。

Offline

#4 2019-03-11 08:56:23

Shin
Member

Re: 見積書テーブルから納品請求書テーブルへのレコードの追加書き出しの方法

元の情報を触らずに、そのレコードのままで納品以降へ持って行く方法もありますよ。
例えば、明細レコードの増減(見積もりから落ちる)は、納品番号を入れないことで実現可能。数量や金額の変更は、納品用の数量、金額のフィールドを作っておき、そこへ入力します。

どうしても別のテーブルで管理したいのでしたら、見積テーブルから明細テーブルへ、関連レコードへ移動 でレコードを絞り込み、納品明細テーブルからそのレコードをインポートするといいです。その後、納品番号を全置換で設定します。

Offline

#5 2019-03-12 14:19:06

Shin
Member

Re: 見積書テーブルから納品請求書テーブルへのレコードの追加書き出しの方法

面白い動きをする、見積もりから請求書までのシステムです。明細レコードに情報を追加する形で、1明細テーブルのみで処理しています。軽い動作でいいかも。
ただ、在庫管理も併せて行うには、適していません。
https://www.dropbox.com/s/uqjucbjus2fvu … 2.zip?dl=0

明細を複数作って行くのでしたら、関連レコードへ移動したところで、目的のテーブルへインポートさせればいいでしょう。

Last edited by Shin (2019-09-16 12:21:31)

Offline

#6 2019-03-13 17:24:26

calafate
Member

Re: 見積書テーブルから納品請求書テーブルへのレコードの追加書き出しの方法

オーソドックスな処理の流れとしてはozmasさんの考え方で見積り伝票がそっくり納品伝票にコピーできます。

親テーブル部分(見積り伝票と納品伝票)は
得意先ID、日付、などのヘッダーアイテムを転記

明細行(ポータル上のテーブル)の移行の仕方は

1)見積りポータル上のデータを見積り伝票のプライマリーキーを元に改行区切りのデータで一括で取得
2) 1で得たデータを今度は納品明細テーブル切り替えてにLoopで1行づつ処理(新規レコードとして)していく

という流れになります。

1)の処理で簡単なのはExecuteSQL関数の使用
それをValueCount関数で行数をカウントしてその回数分のLoopを回す。
納品伝票には納品伝票のプライマリーキーがあるはずでずので、納品明細の各々には外部キーとして納品伝票のプライマリーキーを持たせれば納品伝票のポータル上に表示されます。

複数テーブルのデータ移行の手順はこのパターンを覚えておくと色んな場面で使えます。

V16以降でしたらJSON関数を使っても同じようなことが可能ですが、上のやり方の方がとっつきはいいかと思います。
JSON関数はスクリプトの見通しはいいのですが、データをセットするのに少々コツがいるように思います。

Offline

#7 2019-03-14 10:39:16

Shin
Member

Re: 見積書テーブルから納品請求書テーブルへのレコードの追加書き出しの方法

明細を別に作るのでしたら、インポートするのが処理が早くて確実です。
一般的な手順ですと、
納品伝票テーブルで新規にレコードを作り、その伝票番号などを取得します。
元の見積伝票ヘ戻り、関連レコードヘ移動で見積明細レコードを絞り込みます。
それを、目的の納品明細テーブルへインポートし、納品番号をフィールドの全置換で設定し、リレーションキーを設定します。
この手順では、ウィンドウやレイアウトの移動がかなり多くなるので、動きが複雑です。

少し工夫して、リレーションのキーなどに必要な情報を、別のリレーションやルックアップで設定していく方法です。ついでに、請求書までを自動で作成しています。(納品日の変更は、少し手間がかかります)
https://www.dropbox.com/s/uqjucbjus2fvu … 2.zip?dl=0

Last edited by Shin (2019-09-16 12:21:45)

Offline

#8 2019-03-14 19:30:31

ozmas
Member

Re: 見積書テーブルから納品請求書テーブルへのレコードの追加書き出しの方法

いろいろとありがとうございます。
見積の方で各フィールドをグローバル変数にそっくり格納しておいて、
関連レコードとしての見積明細のレコード数をカウントしてグローバル変数に格納し、
カウントしておいた回数ループさせて、繰り返し回数がレコード数である変数を引数にして繰り返し変数に格納、
納品請求に移動して新規レコードを作成して各フィールドに変数から書き込み、
関連レコードに移動で納品請求明細に移動してから読み込んだのと同じ回数をループさせて新規レコード作成とフィールドへの書き込みを行えば、
50行位をレコード数上限で明細を作ればOKかなってぼーっと考えてたんですが、
平行して作ってた見積書のリストの印刷のページ番号と行番号でどツボにハマっちゃっててそのままになってました。
calafateさんの回答もありがたいしShinさんのサンプルも本当に助かります。
皆さんの回答を元にいいろいろと試して見ます。多分うまくいかない事が出てくると思いますので、これからも宜しくお願いします!!!

Offline

#9 2019-03-15 11:42:42

Shin
Member

Re: 見積書テーブルから納品請求書テーブルへのレコードの追加書き出しの方法

複数レコードのデータを変数などに書き出して、それを分解して各レコードに保存していく、という方法は、テーブル間のインポートが面倒な SQL系のデータベースではよく行われる手法なのでしょうが、FIleMaker はテーブル間での直接のレコードのインポートが容易です。特性をよく知った上で、簡易な手法を採用される方が、開発や運用の負荷を大幅に減らすと思います。

> 見積書のリストの印刷のページ番号と行番号でどツボにハマっちゃっててそのままになってました。
行番号については、最近FM社の掲示板でサンプルを公開しています。https://community.filemaker.com/thread/ … &sr=stream
ページ番号は、FM の機能をそのまま使えばいいのでは。1ページ目がタイトルページならば、そのようなせっていも可能ですよ。(サンプルも、その作りになっています)

Last edited by Shin (2019-03-15 13:39:34)

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.004 seconds, 7 queries executed - Memory usage: 546.45 KiB (Peak: 567.35 KiB) ]