みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になっております。FMP11 Mac 使用です。
マスタテーブルと台帳テーブルがあり、両者を組み合わせてテキストデータを書き出す、ということをやっています。
具体的には、マスタテーブルには様々な報告書の雛形が入っており、それと台帳のデータ(例えば顧客名)を組み合わせて、「マスタ::報告書本文」というフィールド(グローバル)で文章を作成し、フィールド内容のエクスポートでテキストデータを得る、という仕組みです。
このとき、報告書の雛形には多くの種類があり、マスタと台帳の照合がうまくいかずに困っています。
両テーブルともに「条件1」...「条件10」というフィールドを作成し、すべてを「=」で照合していますが、必ずしもすべての条件が入力されているわけではなく、空白のフィールド同士がある場合にリレーションが機能しません。
過去の投稿を読んだところ、やはり空白のフィールドがあるとダメなようです。が、リレーションを工夫すればなんとかなるというご説明もあり、その方法がわかると大変ありがたいです。
とりあえず力技で、空白のときは「条件なし」などを入力するとか、「条件1_照合用」などのフィールドを作って「If(IsEmpty(条件1);"条件なし";条件1)」などとしてこれら同士を照合するなどで解決はできるのですが、今後雛形が増えると条件も増える可能性が高く、前者は条件が見づらくなり、後者はフィールドが増えて管理しづらくなるというデメリットがあります。もしリレーションの設定で解決できるならそれがありがたいです。
よろしくお願いいたします。
Last edited by eddie (2017-12-06 06:19:24)
Offline
条件フィールドに、あらかじめ "条件なし" というテキストを設定しておくと少しはましになるかも。
具体的な動きがわかりませんので、これ以上思いつきません。
特に、報告書の雛形がレコードで格納してある、というのがイメージできません。
Offline
Shinさん、ありがとうございます。
マスタ側に「条件なし」を入力するのは構わないのですが、台帳の各データは報告書作成のためだけにあるわけではないので、できれば本来のデータのみで照合したいです。
マスタ側の構成は単純で、「条件1」...「条件10」「報告書雛形」「報告書本文(G)」というフィールドがあるだけです。本文はテキストで得るのでFMで保存する必要がなく、都度グローバルフィールドに上書きしてエクスポートしています。
追記:
より具体的には、雛形中に [顧客名] などの形式で項目を配置しておいて、台帳のデータを使ってSubstituteして報告書本文を得ています。
最終的にHTMLで処理する必要があるため、このような内容のテキストデータを得ています。
Last edited by eddie (2017-12-05 16:16:47)
Offline
> 条件1」...「条件10」というフィールドを作成し、すべてを「=」で照合しています
and 条件のリレーションですよね?
ならば、
条件1〜10を何らかのセパレータ(改行はダメです)を挟んで全て連結。
このフィールドどうしの照合でいいのでは
Offline
だめか!
例えば、
条件1 条件2
マスタ 空白 ABC
台帳 ABC 空白
このような組み合わせがあるとダメですね。
可能性はありますか?
Offline
連投、ごめんなさい。
計算式が長くなりますが、
空白の場合、他に使われることのない文字(列)を入力とすればいいか。
Case ( IsEmpty ( 条件1 ) ; "~~~" ; 条件1 ) & "|" &
Case ( IsEmpty ( 条件2 ) ; "~~~" ; 条件2 ) & "|" & ・・・・・・
↑ ↑
空白の代わり セパレータ
これを全ての条件つなげます。
Offline
チポさん、ありがとうございます!
その方法でうまくいきました。
こうしたリレーションを様々なファイルで使用しているので、この方法が応用できます。
とても助かりました!
Offline
Pages: 1
[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 566.32 KiB (Peak: 586.77 KiB) ]