みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
オンラインショップの受注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
1回の注文で複数商品を何個まで購入しますか?
発送倉庫用CSVが必要なシステムの方を直した方がいい気がするけど。
普通ならポータル表示を考えるけれど、、
横並びが必須なんですか?
Offline
似たファイルですが、こんな表示でもできます
https://dl.dropboxusercontent.com/u/926 … 22.fp7.zip
でも、このcsvファイル受け取ってからの処理って,結構面倒な様に思いますが。
Offline
timさん、チポさん
書き込み有難うございます。
商品名の横並びは必須となります。
また、1回の商品購入数に上限はありません。
倉庫用CSVにはフィールド名は含めませんので、
恐らくレコードに含まれる商品IDは倉庫側のシステムで
全て読み込む仕様では無いかと思います。
倉庫用CSVのフォーマットをこちらに合わせて頂く事はできず、
また、受注CSVもASPのカートシステムを使用していますので、
フォーマットを変更する事が出来ません。。
その為、ファイルメーカーでCSVを変換できればと考えています。
宜しくお願い致します。
Offline
Shinさん
書き込みいただきまして有難うございます。
またファイルまで準備いただき恐縮です。
しかし、ファイルメーカーPro7で実行したところ、
下記フィールドの関数が見つからず、
CSVが正常に作成されませんでした。
下記エラーが起こっているのですが、
ファイルメーカーPro7には無い関数なのでしょうか?
恐れ入りますが、ご教授頂けましたら幸いです。
【購入商品】
Case (
Mod ( Get ( 計算式繰り返し位置番号 ) ; 2 ) ; <関数が見つかりません> ( <関数が見つかりません> ( stepbbs212362 2::商品名 ) ; Div ( Get ( 計算式繰り返し位置番号 ) + 1 ; 2 ) ) ;
<関数が見つかりません> ( <関数が見つかりません> ( stepbbs212362 2::個数 ) ; Div ( Get ( 計算式繰り返し位置番号 ) + 1 ; 2 ) )
)
【購入商品_】
ID & "," & 受注コード & "," & Substitute ( <関数が見つかりません> ( 購入商品 ) ; ¶ ; "," ) & "," & 価格
Offline
List() GetValue() ですが、8と8.5以降でしたね。残念ですが、代替は、フィールド名で延々と書くか、再帰で書くくらいかな。
FM7は、かなりバグが多く残っているので、お勧めできないバージョンです。バージョンアップされれば如何ですか。
Offline
List() GetValue() ですが、8と8.5以降でしたね。残念ですが、代替は、フィールド名で延々と書くか、再帰で書くくらいかな。
FM7は、かなりバグが多く残っているので、お勧めできないバージョンです。バージョンアップされれば如何ですか。
Shinさん
さっそくお返事頂きまして有難うございます。
Ver8以降でないと使えない関数なのですね。。。
7はバグが多いようですが、手元には7しか無く、
購入も現時点では難しい状況です(まだFMを使用するか検討段階のため)。
代替は、フィールド名で延々と書くか、再帰で書く、との事ですが、
どのような処理になりますでしょうか?
恐れ入りますが、ご教授頂けましたら幸いです。
よろしくお願いします。
Offline
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
レコードのソート [ 特定のソート順: 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
あぁ、全レコードコピーが楽かなと思ってたけど、グローバルにLoopもあったのか。
こちらの方が簡単みたいですね。
Offline
変数が使えれば、もっとスマートなのに.
今となっては、FM7は辛いですね。(全く触らなかったバージョンですが)
あやまさんも、一度FM13の試用版を試してみたら如何です。全く別のソフトか,と思うくらい違いますよ。
Offline
Pages: 1
[ Generated in 0.016 seconds, 9 queries executed - Memory usage: 552.53 KiB (Peak: 573.44 KiB) ]