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

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

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

You are not logged in.

Announcement

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


#1 2015-02-16 21:19:22

おやま
Member

複数レコードの結合

オンラインショップの受注CSVを発送倉庫用CSVに変換したくて、
ファイルメーカーを勉強しながら作成しています。

マニュアルなどを読んで進めていたのですが、
下記をどのように実現できるのか分からず投稿させて頂きました。

バージョン:ファイルメーカーPro7
OS:windows7


●要件

受注CSV = テーブルA
倉庫CSV = テーブルB

テーブルAのレコードを元にテーブルBを作成するのですが、
テーブルBは「受注コード」毎にレコードを作成する必要があります。
しかし、テーブルAの「受注コード」はユニークではありません。
(1回の注文で複数商品を購入した場合に同じ受注コードが入ります。)

同じ「受注コード」がある場合は、1レコードとして結合したいのです。
下記のように、テーブルを結合する事はできないでしょうか?
※テーブルAはユニークな「ID」を持っています。


============
テーブルA
============

ID |受注コード| 商品名 | 個数 | 価格 |
1  | 100001 | シャツ |  1  | 5000 |
2  | 100002 | シャツ |  1  | 5000 |
3  | 100002 | ズボン |  1  | 5000 |
4  | 100002 | ボウシ |  1  | 5000 |
5  | 100003 | シャツ |  1  | 5000 |


↓に変換したい


============
テーブルB
============

ID |受注コード| 商品名 | 個数 | 価格 | 商品名 | 個数 | 価格 | 商品名 | 個数 | 価格 | 合計価格 |
1  | 100001 | シャツ |  1  | 5000 |
2  | 100002 | シャツ |  1  | 5000 | ズボン |  1  | 5000 | ボウシ |  1  | 5000 |  15000  |
5  | 100003 | シャツ |  1  | 5000 |


受注コード 100002 のように、同じ受注コードがあれば、購入商品を末尾に付加したいです。
テーブルBでは「ID」フィールドはあっても無くても構いません。


質問内容が分かりにくいかもしれませんが、、
どうかご教授くださいませ。よろしくお願いします。

Offline

#2 2015-02-17 09:02:48

tim
Guest

Re: 複数レコードの結合

1回の注文で複数商品を何個まで購入しますか?

発送倉庫用CSVが必要なシステムの方を直した方がいい気がするけど。

#3 2015-02-17 09:38:08

チポ
Member

Re: 複数レコードの結合

普通ならポータル表示を考えるけれど、、

横並びが必須なんですか?

Offline

#4 2015-02-17 13:19:24

Shin
Member

Re: 複数レコードの結合

似たファイルですが、こんな表示でもできます
https://dl.dropboxusercontent.com/u/926 … 22.fp7.zip

でも、このcsvファイル受け取ってからの処理って,結構面倒な様に思いますが。

Offline

#5 2015-02-17 15:15:30

おやま
Member

Re: 複数レコードの結合

timさん、チポさん

書き込み有難うございます。

商品名の横並びは必須となります。
また、1回の商品購入数に上限はありません。

倉庫用CSVにはフィールド名は含めませんので、
恐らくレコードに含まれる商品IDは倉庫側のシステムで
全て読み込む仕様では無いかと思います。

倉庫用CSVのフォーマットをこちらに合わせて頂く事はできず、
また、受注CSVもASPのカートシステムを使用していますので、
フォーマットを変更する事が出来ません。。
その為、ファイルメーカーでCSVを変換できればと考えています。

宜しくお願い致します。

Offline

#6 2015-02-17 15:19:43

おやま
Member

Re: 複数レコードの結合

Shinさん

書き込みいただきまして有難うございます。
またファイルまで準備いただき恐縮です。

しかし、ファイルメーカーPro7で実行したところ、
下記フィールドの関数が見つからず、
CSVが正常に作成されませんでした。

下記エラーが起こっているのですが、
ファイルメーカーPro7には無い関数なのでしょうか?

恐れ入りますが、ご教授頂けましたら幸いです。


【購入商品】
Case (
Mod ( Get ( 計算式繰り返し位置番号 ) ; 2 ) ; <関数が見つかりません> ( <関数が見つかりません> ( stepbbs212362 2::商品名 ) ; Div ( Get ( 計算式繰り返し位置番号 ) + 1 ; 2 ) ) ;
<関数が見つかりません> ( <関数が見つかりません> ( stepbbs212362 2::個数 ) ; Div ( Get ( 計算式繰り返し位置番号 ) + 1 ; 2 ) )
)


【購入商品_】
ID & "," & 受注コード & "," & Substitute ( <関数が見つかりません> ( 購入商品 ) ; ¶ ; "," ) & "," & 価格

Offline

#7 2015-02-17 17:39:57

Shin
Member

Re: 複数レコードの結合

List() GetValue() ですが、8と8.5以降でしたね。残念ですが、代替は、フィールド名で延々と書くか、再帰で書くくらいかな。
FM7は、かなりバグが多く残っているので、お勧めできないバージョンです。バージョンアップされれば如何ですか。

Offline

#8 2015-02-17 17:55:58

おやま
Member

Re: 複数レコードの結合

Shin wrote:

List() GetValue() ですが、8と8.5以降でしたね。残念ですが、代替は、フィールド名で延々と書くか、再帰で書くくらいかな。
FM7は、かなりバグが多く残っているので、お勧めできないバージョンです。バージョンアップされれば如何ですか。


Shinさん

さっそくお返事頂きまして有難うございます。
Ver8以降でないと使えない関数なのですね。。。
7はバグが多いようですが、手元には7しか無く、
購入も現時点では難しい状況です(まだFMを使用するか検討段階のため)。

代替は、フィールド名で延々と書くか、再帰で書く、との事ですが、
どのような処理になりますでしょうか?

恐れ入りますが、ご教授頂けましたら幸いです。
よろしくお願いします。

Offline

#9 2015-02-17 20:40:22

旅人
Member

Re: 複数レコードの結合

7を持ってないけど、10ならこんなのでできた?
7でできるか不明。

1.受注コード(常時ユニーク制限)フィールドを持つテーブルBを作る
2.AとBを受注コードでリレーション
3.テーブルAから受注コードをインポート(重複無しの受注コードのみになる)
4.テーブルBにポータルを置いて、Aの購入商品名、個数、価格を表示
5.グローバルテキストフィールドを作りBの新規レイアウトに置く
6.4のレイアウトに戻って、スクリプトで全レコードコピーする
7.5のレイアウトに移ってグローバルフィールドに貼り付ける
8.グローバルフィールドの内容をSubstitute関数でフィールド内改行コードと項目区切りのようなコードが
繋がった部分を「,」に変換、更に項目区切りのようなコード部分を「,」にフィールド設定で変換する

その結果、グローバルフィールドが
10001,シャツ,1,5000
10002,シャツ,1,5000,ズボン,1,5000,ボウシ,1,5000
10003,シャツ,1,5000
のような形になるはずなのだけど、あとはこれを繰り返しに変換して・・・・
とここまで書いて、合計金額を考えていなかったのに気づいた。
疲れたのでストップ。
やっぱりバージョンアップ?

Offline

#10 2015-02-17 22:19:40

Shin
Member

Re: 複数レコードの結合

レコードのソート [ 特定のソート順: joy_h2722::受注コード; 昇順 ][ 記憶する; ダイアログなし ]
レコード/検索条件/ページへ移動 [ 最初の ]
フィールド設定 [ joy_h2722::g_CODE; joy_h2722::受注コード ]
フィールド設定 [ joy_h2722::g_TEXT; joy_h2722::受注コード ]
フィールド設定 [ joy_h2722::g_SUM; 0 ]
Loop
 If [ joy_h2722::受注コード = joy_h2722::g_CODE ]
  フィールド設定 [ joy_h2722::g_TEXT; joy_h2722::g_TEXT & "," & joy_h2722::商品名 & "," & joy_h2722::個数 ]
  フィールド設定 [ joy_h2722::g_SUM; joy_h2722::g_SUM + joy_h2722::価格 ]
 Else
  フィールド設定 [ joy_h2722::g_TEXT; joy_h2722::g_TEXT & "," & joy_h2722::g_SUM & ¶ & joy_h2722::受注コード & "," & joy_h2722::商品名 & "," & joy_h2722::個数 ]
  フィールド設定 [ joy_h2722::g_CODE; joy_h2722::受注コード ]
  フィールド設定 [ joy_h2722::g_SUM; joy_h2722::価格 ]
 End If
 レコード/検索条件/ページへ移動 [ 次の; 最後まできたら終了 ]
End Loop 
フィールド設定 [ joy_h2722::g_TEXT; joy_h2722::g_TEXT & "," & joy_h2722::g_SUM ]
全レコードを表示 
レコードを対象外に 
対象外のみを表示
レコードのエクスポート [ ファイル名: 「file:../../../Desktop/名称未設定.csv」; 文字セット: 「日本語 (Shift-JIS)」; フィールド 順: joy_h2722::g_TEXT ][ ダイアログなし ]

というスクリプトを流せば良いでしょう。
https://dl.dropboxusercontent.com/u/926 … 22.fp7.zip

Offline

#11 2015-02-18 09:02:05

旅人
Member

Re: 複数レコードの結合

あぁ、全レコードコピーが楽かなと思ってたけど、グローバルにLoopもあったのか。
こちらの方が簡単みたいですね。

Offline

#12 2015-02-18 13:38:36

Shin
Member

Re: 複数レコードの結合

変数が使えれば、もっとスマートなのに.
今となっては、FM7は辛いですね。(全く触らなかったバージョンですが)

あやまさんも、一度FM13の試用版を試してみたら如何です。全く別のソフトか,と思うくらい違いますよ。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.016 seconds, 9 queries executed - Memory usage: 552.53 KiB (Peak: 573.44 KiB) ]