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

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

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

You are not logged in.

Announcement

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


#1 2014-04-30 16:46:16

me
Guest

マスタテーブルに存在する全レコードのIDを取得して、それを使って順番に検索する

よろしくお願いします。FileMaker13です。

ホテル宛の宿泊予約が書かれたPDFをホテル毎にPDFに出力したいと思っています。
現在、PDFには全ホテルがホテル毎にページが改行されて作成されているのですが、
ページをバラバラに出力することができないようですので、
作成段階で各ホテル数のPDFを作成する必要がありそうです。

そこでホテルマスタのIDで検索してひとつずつPDFを作成しようと思うのですが、
マスタからIDを順番に取得する方法がわかりません。
どのようにすればよいでしょうか。

#2 2014-04-30 17:30:48

Traveller
Guest

Re: マスタテーブルに存在する全レコードのIDを取得して、それを使って順番に検索する

質問の意味がよく分かってないけど、ホテルマスタに予約データの
ポータルを作るとか、ホテルIDと期間で予約データとリレーション
して関連レコードがあるホテルIDを検索して関連レコード移動して
PDF送信をLoopするとか?

#3 2014-04-30 17:55:23

me
Guest

Re: マスタテーブルに存在する全レコードのIDを取得して、それを使って順番に検索する

情報が不足していて申し訳ありません。
下記のような宿泊予定テーブルがあります。


◯宿泊予定テーブル
日付
営業ID
ホテルID(ホテルマスタとリレーション)



このテーブルの該当月レコードをホテルID、営業ID、日付でソート
し、下記のようなくくりでPDFを作成しています。


>ホテルα1宛メール
ホテルα1(それぞれ改行)
田中
2014.5.4
2014.5.5
2014.5.6
2014.5.21
2014.5.22
鈴木
2014.5.2
2014.5.3
2014.5.4
2014.5.11
2014.5.20

>東横イン宛メール
東横イン
川崎
2014.5.1
2014.5.2
2014.5.5
上原
2014.5.4
2014.5.11



すべての宿泊レコードが記載された1ファイルのPDFは作成できるのですが、
1ホテル毎に1PDFファイルにする方法がわかりません。

ホテルIDでひとつずつ検索してPDF作成しようと考えたのですが、
マスタにあるIDを取得する方法もわからないという状況です。
初歩的な質問で恐れ入りますがご教授お願いいたします。

#4 2014-04-30 18:53:36

Traveller
Guest

Re: マスタテーブルに存在する全レコードのIDを取得して、それを使って順番に検索する

ホテルマスタにグローバル日付フィールドを作って今日以降なら14.4.30と入れます。
    ホテルマスタ            宿泊予定テーブル
    ホテルID           =    ホテルID
    グローバル日付   ≤    宿泊日付
でリレーションして、そのリレーションのポータルをホテルマスタに置いて、宿泊予定テーブルの
営業名と日付フィールドを入れます。
ホテルマスタでポータル内に関連レコードが入っているホテルを検索して1レコードコードずつファ
イルパスを変数に入れてPDF保存して、それを添付して送信を対象レコードでLoopします。

#5 2014-04-30 20:05:18

FM12始めたばかり
Guest

Re: マスタテーブルに存在する全レコードのIDを取得して、それを使って順番に検索する

「対象レコードの該当フィールドから情報をひとつにまとめる」の続きですね

ホテル毎の集計は完成し、
1レコードをPDF1ページにしたいとのお考えでしたら、
パートの設定 → 任意の回出現後に改ページ(1) → PDFファイルとして保存 (PDF分割)

又、的外れでしたかな・・・?

#6 2014-04-30 22:26:27

こみ
Guest

Re: マスタテーブルに存在する全レコードのIDを取得して、それを使って順番に検索する

方法は色々あるでしょうけど、データのあるとこだけ連絡するなら
マスターは使わないでもいいのでは。
新規ウィンドウ
先頭のグループを検索
pdf作成
ウィンドウを閉じる
先頭のグループを除外
対象レコードがあればループ

#7 2014-05-01 17:19:03

me
Guest

Re: マスタテーブルに存在する全レコードのIDを取得して、それを使って順番に検索する

皆様ありがとうございます。
本当に助かります。
しかしながら恥ずかしながらまだよく飲み込めていません。
申し訳ありません。もう少し教えていただけないでしょうか。


>Traveller様
なるほど、ホテルマスタを主体にするのですね。
PDFにするレイアウトは
ヘッダ、ボディ、小計パートなどもあるのですが、
どのようにして変数に入れるのかがどうしてもわかりませんでした。
もう少し詳しく教えていただけないでしょうか。
私の説明がわかりにくくて申し訳ありません。
現在1ページ1ホテルとして全ホテル分が1つのPDFになっているのですが、
1ページをPDF1ファイルに分割して出力したいだけなんです。

>ホテルα1宛PDF
田中
2014.5.4
2014.5.5
2014.5.6
2014.5.21
2014.5.22
鈴木
2014.5.2
2014.5.3
2014.5.4
2014.5.11
2014.5.20


>東横イン宛PDF

川崎
2014.5.1
2014.5.2
2014.5.5
上原
2014.5.4
2014.5.11




>FM12始めたばかり様
その通りです。「対象レコードの該当フィールドから情報をひとつにまとめる」の続きです。
https://fm-aid.com/bbs2/viewtopic.php?id=1403
PDFは1ページに1ホテルを分割できているのですが、
さらに、1ページをPDF1ファイルとして出力したいと考えています。
つまりホテルが10件あれば、10個のPDFファイル(1ファイルにはホテル1件)を作成したいのです。


>こみ様
もう少し詳しく教えていただけないでしょうか。
先頭のグループを検索が見当たりませんでした。
これはスクリプトではないのでしょうか。

#8 2014-05-01 17:28:39

こみ
Guest

Re: マスタテーブルに存在する全レコードのIDを取得して、それを使って順番に検索する

エラー処理[オン]
Loop
新規ウィンドウ
レコードへ移動[先頭]
一致するレコードを検索 [絞り込み; ホテルID]
ソート
pdf保存
ウィンドウを閉じる[現在の]
フィールドへ移動[ホテルID]
検索モード[]
直前のレコードから挿入[ホテルID]
レコードを対象外に
対象レコードの絞り込み[]
ExitLoopIf[Get(対象レコード数)=0]
ソート
EndLoop

#9 2014-05-01 18:07:54

チポ
Member

Re: マスタテーブルに存在する全レコードのIDを取得して、それを使って順番に検索する

Travellerさんの方法がいいのでは。

リレーションを使って、
関連レコードへ移動
で対象レコードを絞り込みますから、変数は不要ですよ。

Offline

#10 2014-05-01 19:36:54

Traveller
Guest

Re: マスタテーブルに存在する全レコードのIDを取得して、それを使って順番に検索する

どんな方法がいいのか考えず、思い付きで書いてしまったけど
一応手抜きサンプル
http://pupld.net/21/140501/it6ajtu38n/index.cgi
ホテル予約.fmp12(アップした場所では「約.fmp12」になってる)

Winで試したけどMacと違って、まとめて送信予約に入るのでは無く
送信しないとLoopの次のステップには進まないのかな?
最初のメール画面が出たら「×」で閉じてね。

#11 2014-05-07 17:23:48

me
Guest

Re: マスタテーブルに存在する全レコードのIDを取得して、それを使って順番に検索する

Traveller様、サンプルまで作っていただきありがとうございます。

参考にさせていただきながら改造しているのですが、
ホテル1件につき何十件にもなることがあり、A4用紙1枚に収まりません。
現在つくっているレイアウトはヘッダ、小計パート、ボディパート、フッタパートを利用して数に応じて綺麗に可変されるのですが、
ポータルを使った方法で対応することはできるのでしょうか。

#12 2014-05-07 17:38:21

Shin
Member

Re: マスタテーブルに存在する全レコードのIDを取得して、それを使って順番に検索する

ポータルを使うと、ヘッダ、フッタの位置は固定で、もしポータル行からあふれると、表示できません。

ホテルマスタから、リレーションを通して、関連レコードへ移動、を行なって、エラーが起きなければ、現在作られているレイアウトで表示して、PDFへ書き出し、メール送信、をして、次のレコードへ移動、を繰り返せば良いのでは。
ホテルマスタで下手に条件分けするより全レコードを舐めたほうが早いかもしれませんよ。

Last edited by Shin (2014-05-07 18:00:37)

Offline

#13 2014-05-07 19:29:45

me
Guest

Re: マスタテーブルに存在する全レコードのIDを取得して、それを使って順番に検索する

Shin様、ありがとうございます!ようやくうまくいきました。

ホテル側からアプローチするという逆転の発想が1人ではできませんでしたが、
皆様のアドバイスで完成させることができました。
助けていただき本当にありがとうございました。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 552.11 KiB (Peak: 573.02 KiB) ]