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

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

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

You are not logged in.

Announcement

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


#1 2014-02-22 16:06:46

nego
Member

別テーブルへの取込み方法

いつもお世話になっております。

先日下記トピックで質問いたしました。
https://fm-aid.com/bbs2/viewtopic.php?id=830

今回、フィールド6~10の空欄ではないフィールドを、
別のテーブルへそれぞれ1レコードとして取込みするにはどうしたらよいでしょうか。


環境はFMpro12 win7です。

Last edited by nego (2014-02-22 16:45:58)

Offline

#2 2014-02-22 17:19:03

Traveller
Guest

Re: 別テーブルへの取込み方法

全部空欄ではないレコードもあるわけですから、別テーブルのフィールドも5個必要なわけで、
普通にインポートするだけかと。

#3 2014-02-22 17:29:40

nego
Member

Re: 別テーブルへの取込み方法

Travellerさん
ありがとうございます。

説明が下手で申し訳ないのですが、
別テーブル(テーブルBとします)へのインポートは下記のようにしたいのです。


テーブルA                → テーブルB
1レコード目 フィールド6         1レコード目 フィールド1
1レコード目 フィールド7         2レコード目 フィールド1
1レコード目 フィールド8         3レコード目 フィールド1
1レコード目 フィールド9(空欄)
1レコード目 フィールド10(空欄)
2レコード目 フィールド6         4レコード目 フィールド1
2レコード目 フィールド7         5レコード目 フィールド1
2レコード目 フィールド8         6レコード目 フィールド1
2レコード目 フィールド9         7レコード目 フィールド1
2レコード目 フィールド10(空欄)

Offline

#4 2014-02-22 17:50:32

Traveller
Guest

Re: 別テーブルへの取込み方法

テーブルBのフィールド1を常時空欄不可にしておいて、レコードIDとかとともに5回インポート
レコードIDでソートする。

#5 2014-02-22 17:55:13

Shin
Member

Re: 別テーブルへの取込み方法

計算式の繰り返しフィールドを作り、それらのフィールドのデータを格納。
テーブルBでそのレコードをインポートし、繰り返しはレコードへ分解すると良いでしょう。

計算フィールドは、
Extend ( GetField ( "フィールド" &  ( Get ( 計算式繰り返し位置番号 ) + 5 ) )
でいいでしょう。データに改行が含まれ無いのでしたら、
GetValue ( List ( フィールド6[1] ; フィールド7[1] ; フィールド8[1] ; フィールド9[1] ; フィールド10[1] ) ; Get ( 計算式繰り返し位置番号 ) )
の方が一般性があっていいでしょう。

Last edited by Shin (2014-02-22 23:37:10)

Offline

#6 2014-02-22 18:11:13

通りすがり
Guest

Re: 別テーブルへの取込み方法

繰り返しの計算フィールドなんか作らなくてもList関数で取り出した値を引数にしたら空欄とかも勝手に詰めてくれるし楽だと思う。

#7 2014-02-22 20:06:18

nego
Member

Re: 別テーブルへの取込み方法

いろいろなアドバイスありがとうございます。

Travellerさん
テーブルAのフィールド数は5個で質問しましたが、実際はもっと増えます。(現状でも12個)
さらにテーブルAのレコード数は何千とあるので、インポートを繰り返すとかなり時間がかかりそうです。

Shinさん
繰り返しフィールドですね!
なんとなく繰り返しフィールドを使ってできるのではないかと思っていましたが、
どう使えばいいのかよくわかりませんでした・・・。試してみます。

通りすがりさん
最初の質問で教えていただいたList関数を使うということですね?
>取り出した値を引数にしたら
のところをもう少し詳しく教えていただきたいです。

Offline

#8 2014-02-22 22:48:50

Shin
Member

Re: 別テーブルへの取込み方法

繰り返しフィールドを作ると、スクリプトを使わずとも、手動でのインポートでもインポート時の設定で、レコードに分解してくれる事です。特に、レコード数が多い時には、非常に大きなメリットだと思いますが。
数十個程度のレコードでしたら、list を作ってインポート後にスクリプトで処理、とか、リレーションを張って、ポータルの中でレコードを作っていく、という方法でも早い処理が可能です。

もとの質問の状態からでしたら、フィールド1〜5から直接データを取り込めば良いでしょう。途中に空白が有っても、インポート後に検索して削除した方が早いかもしれません。

Last edited by Shin (2014-02-22 23:35:26)

Offline

#9 2014-02-23 14:27:14

nego
Member

Re: 別テーブルへの取込み方法

Shinさん
より詳しい説明ありがとうございます!
場合によってのいろいろな方法やメリットを教えていただいてとても勉強になります。

自分なりに最初にやってみた方法は、リレーションでレコードを作る方法で、
フィールド5個で1,000フィールド程度ならあまり気にならないスピードでしたが、
12個のフィールドを5,000レコードで実行したところ1時間以上かかりました。。。
スクリプトにも問題はあったと思うのですが(汗)

教えていただいたことで改善していけそうです。
ありがとうございます。

Offline

#10 2014-02-23 18:38:16

nego
Member

Re: 別テーブルへの取込み方法

Shinさん
繰り返しフィールドを作って、インポートしてみました。
やりたいことはできました!
しかし時間がかかってしまいます。
1000レコード分の繰り返しフィールドのインポートで10分程度。
こんなものでしょうか?

Offline

#11 2014-02-24 09:11:20

Shin
Member

Re: 別テーブルへの取込み方法

繰り返し12にして1000レコードのインポートで、約0.8秒でしたが。
取り込む側に、自動入力や複雑なフィールド制限などが設定して有りませんか。

Offline

#12 2014-02-24 18:38:52

nego
Member

Re: 別テーブルへの取込み方法

取り込む側 とは、テーブルBの方でしょうか?
テーブルBのフィールドはすべてテキストで設定しています。
新たなファイルを作ってインポートしてみましたが変わりませんでした。

テーブルA側の方に原因がありますよね・・・。わからなくて困りました。。

Offline

#13 2014-02-24 18:50:22

nego
Member

Re: 別テーブルへの取込み方法

Shin wrote:

計算式の繰り返しフィールドを作り、それらのフィールドのデータを格納。
テーブルBでそのレコードをインポートし、繰り返しはレコードへ分解すると良いでしょう。

計算フィールドは、
Extend ( GetField ( "フィールド" &  ( Get ( 計算式繰り返し位置番号 ) + 5 ) )
でいいでしょう。データに改行が含まれ無いのでしたら、
GetValue ( List ( フィールド6[1] ; フィールド7[1] ; フィールド8[1] ; フィールド9[1] ; フィールド10[1] ) ; Get ( 計算式繰り返し位置番号 ) )
の方が一般性があっていいでしょう。


繰り返しフィールドの計算は、後者を使っていましたが、前者へ変えたところ少しは速度がアップしました。

フィールド6~10も計算フィールドなことが重くなる原因でしょうか。

Offline

#14 2014-02-24 20:41:37

wader
Member

Re: 別テーブルへの取込み方法

計算が非保存なのでは。

Offline

#15 2014-02-24 22:04:21

Shin
Member

Re: 別テーブルへの取込み方法

日常的にそのインポートを行うのですか。運用を考え直すべきでは。

Offline

#16 2014-02-24 23:15:32

nego
Member

Re: 別テーブルへの取込み方法

waderさん
非保存でした。
「計算結果を保存せず必要時に計算する」チェックを外したところ、データベース更新が終わらなくなってしまいました(汗)

Shinさん
インポートは頻繁に行うつもりでおりました。
まさかこんなに時間がかかるとは。
仰る通り少し時間をかけて運用の考え直しが必要そうです。
いろいろとアドバイスありがとうございました。

Offline

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: 599.67 KiB (Peak: 616.58 KiB) ]