みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Win7 Fm13を使用しています。
たぶん単純な事だとは思うのですが、
なにぶん初心者で、方法が判りません。
宜しくお願いします。
受注テーブル
得意先CD 品番 納期01 数量01 納期02 数量02 納期03 数量03........納期31 数量31
0001 AAA 15/05/01 100 15/05/05 300
0002 YYY 15/05/11 500 15/05/12 600 15/05/13 700
上記のようなテーブルを、下記のようなテーブルに インポートしたいのですが?
途中から、納期 数量が空白の場合もあり、それは出力しない
受注明細テーブル
得意先CD 品番 納期 数量
0001 AAA 15/05/01 100
0001 AAA 15/05/05 300
0002 YYY 15/05/11 500
0002 YYY 15/05/12 600
0002 YYY 15/05/13 700
納期01 数量01 納期02 数量02 納期03 数量03........納期31 数量31
これは二つの繰り返しフィールドですか?
Offline
納期01 数量01 納期02 数量02 .... 納期31 数量31 と言うような名前で定義されています。
すいません、繰り返しフィールドではないです。
空白を対象外にしてインポート、
これを31回繰り返す。
または、
計算フィールド繰り返しを二つ作って、
納期と数量をそれぞれ計算入力。
その繰り返しを1レコードずつに分解してインポート。
これは1回で済みますが、空白もインポートされちゃいますから、
インポート後に空白を検索して削除。
どちらかですかね。
Offline
空白を対象外にしてインポート、これを31回繰り返す。
これは loop文を使うと言う事でしょうか?
loop文の中で、納期01を納期02...納期31 と数字部分だけを変更できるのでしょうか?
そのあたりの所も、申し訳ありませんが、指導して頂けませんでしょうか?
Loopで
検索
レイアウト切り替え
インポート
レイアウト切り替え
これを31回繰り返すことになります。
検索フィールドの指定は
スクリプトステップ
フィールドを名前で設定
でフィールド名を計算式で指定できます。
その計算式は
SerialIncrement ( "テーブル名::納期01" ; $c )
として、
変数 $c を0から30まで順に変えてゆけばいいでしょう。
Offline
ああ、書き落としました。
インポートの際、ソースフィールドを動的に変化させることはできませんから、
ソースフィールド用に二つ作り、そこへ入力して、それをインポート
でしょうか。
繰り返しに入力する方法の方が簡単でしょう。
レコード削除がいやなら、インポートを仮テーブルにして、
インポート
空白レコード削除
本テーブルでインポート
このステップでできますね。
Offline
ありがとうございます。大変たすかりました。繰り返しでやってみます。
すいません。まだ出来なくて…。
Loopで
検索
レイアウト切り替え
インポート
レイアウト切り替え
これを31回繰り返すことになります。
この中のインポートとは、スクリプトのレコードのインポートの事ですよね?
それとも、得意先CD、納期、数量 を それぞれフィールド設定するって事でしょうか?
そうですよ、
スクリプトステップ
レコードのインポート
です。
インポートのソーステーブルが、開かれている状態だと、
その対象レコードをインポートします。
Offline
「インポートの際、ソースフィールドを動的に変化させることはできませんから、
ソースフィールド用に二つ作り、そこへ入力して、それをインポートでしょうか。」
すいません、この意味が理解できません。
噛み砕いて、教えて頂けないでしょうか?
スクリプトで
納期01に入力が有るものを検索
別テーブルで、納期01・数量01をインポート
これを31回繰り返して、全ての納期・数量をインポートするんですよね。
その31回分スクリプトを書くのは面倒なので、1回分をLoopで31回繰り返そう。
これが目的ですよね。
そのインポートのスクリプトステップでは、
インポート元のフィールドを動的に変化させることが出来ません。
ですから、
インポート用に二つフィールドを作り、
そこへ、インポートするフィールドの値を移して、
そのフィールドをインポート元に指定しよう。
という考えです。
やはり、このステップは結構めんどうでしょう。
繰り返しフィールドに値を全て移して、1回のインポート。
これがお薦めですよ。
Offline
はい…。なんとなくは理解できるのですが…。
チポさんがお勧めの、「繰り返しフィールドに値を全て移して、1回のインポート。」を詳しく教えてもらえませんでしょうか?
本当に、すいません。宜しくお願いします。
計算フィールドを作り、仮に、
納期_繰り返し
として、
その計算式
Case ( Get ( 計算式繰り返し位置番号 ) ; "" ; 納期01[1] ; 納期02[1] ; 納期03[1] ;・・・・ 納期31[1] )
繰り返しを31回に指定
同様に、数量も作ります。
ここは、力技で根気よく作ってください ;;;
これができれば、
明細テーブルで、繰り返しをばらして1回のインポートで終わります。
Offline
計算フィールド 納期_繰り返し は、受注テーブルに作ればいいんですよね?
繰り返しを31回に指定 は、計算フィールド 納期_繰り返し の中での設定で良いんでしょうか?
それから、下記の定義の事なんですが、[2]、[3] 等も作って行くのでしょうか?
本当にすいません、宜しくお願いします。
Case ( Get ( 計算式繰り返し位置番号 ) ; "" ; 納期01[1] ; 納期02[1] ; 納期03[1] ;・・・・ 納期31[1]
計算フィールド 納期_繰り返し は、受注テーブルに作ればいいんですよね
その通りです。
繰り返しを31回に指定 は、計算フィールド 納期_繰り返し の中での設定で良いんでしょうか?
その通りです。
計算式の指定窓の下にある、繰り返し数の設定です。
納期01[1]
これは、
Extend ( 納期01 )
と同じです。
[2] [3]
は有りません。
この関数のヘルプをリンクしておきます。
ご一読下さい
Offline
これができれば、明細テーブルで、繰り返しをばらして1回のインポートで終わります。
ご迷惑を、おかけしています。
すいません、この「明細テーブルで、繰り返しをばらして」の意味が理解できません。
噛み砕いて説明していただけませんでしょうか?
「フィールドデータのインポート順」窓で、
インポート元に繰り返しフィールドを選択して、
「インポート」ボタンを押すと、
「インポートオプション」窓が現れます。
そこで、
「繰り返しフィールドの値のインポート方法」
で
「複数のレコードに分ける」
を選択します。
これで繰り返しフィールドの各回が1レコードずつになります。
複数の繰り返しフィールドの場合、同じ回が1レコードになります。
レスのたびに「すいません」は不要ですよ、
好きでやっていることですから ^^
Offline
「繰り返しフィールドの値のインポート方法」 ありがとうございます。これは理解できました。
ただ、インポートを実行しても、納期、数量入ってる、受注明細テーブルが作成できませんでした。
下記の事を定義した後に、受注テーブルの表示画面を作成し、納期_繰り返し の項目を表示してみたのですが、
内容が表示されていませんでした。何か注意すべきところがあるのでしょうか?
計算フィールドを作り、仮に、
納期_繰り返し
として、
その計算式
Case ( Get ( 計算式繰り返し位置番号 ) ; "" ; 納期01[1] ; 納期02[1] ; 納期03[1] ;・・・・ 納期31[1] )
繰り返しを31回に指定
同様に、数量も作ります。
Case ( Get ( 計算式繰り返し位置番号 ) ; "" ; 納期01[1] ; 納期02[1] ; 納期03[1] ;・・・・ 納期31[1] )
ご ご ごめんなさい、まったくのミスです。
Choose ( Get ( 計算式繰り返し位置番号 ) ; "" ; 納期01[1] ; 納期02[1] ; 納期03[1] ;・・・・ 納期31[1] )
これが正しいです。
Chooseとタイプしたつもりが、、気がつきませんでした。
無駄な時間を取らせてしまいました、申し訳有りません -_-
Offline
チポ様 ありがとうございました。無事出来ました。
Pages: 1
[ Generated in 0.011 seconds, 7 queries executed - Memory usage: 563.56 KiB (Peak: 584.47 KiB) ]