みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FM13を使用しています。
工業機械の動作命令を読み込むための改行区切りの.txtファイルをエクスポートしたいのですが、横並びのレコードを分けて、縦並びのテーブルに変換(転置)する方法で困っています。
ひとつの.txtファイルの元となるデータは一行分のレコード(繰り返しフィールドなし)で、
(例)
No フィールド1 フィールド2 ・・・ フィールド20
123 A B ・・・ T
のようになっています。ひとつひとつのフィールドを別ファイルのレコードに変換し
フィールド
123
A
B
:
T
のように変換するにはどのような方法があるでしょうか。
フィールドの数はかならずしも一定ではなく、同じレコード内の別のフィールドの値によって変化します。
ご回答のほどよろしくお願いいたします。
Offline
繰り返しフィールドに入れたら別テーブルからインポートして
書き出すだけなのですが。
計算フィールド(式:List(No;フィールド1;フィールド2;・・・;フィールド20))を作り、それを「ファイールド内容のエクスポート」するのが楽かな。
ただし、出力文字コードはUnicodeに限定な事と、式は空白(空行)フィールド値が含まれない事が前提、ある場合は式を調整。
Offline
Travellerさんのいうようにしたら簡単なのかなと感じました。
勉強不足で繰り返しフィールドについてはっきりと理解できていないのですが、
ひとつのレコードとして横並びになっているデータを自動で繰り返しフィールド内に押し込むことが可能なのでしょうか。
できるとしたらどのような操作になりますでしょうか。
Offline
Hiroさんのと最初の手順は同じなので、Hiroさんの方が簡単です。
一応
Listの計算フィールドを作って
GetValue (計算フィールド[1] ; Get ( 計算式繰り返し位置番号 ) )ですが。
空白のフィールドはそのまま空白行にしたい場合、
フィールド名の番号を式に利用して、フィールド名を $fnと$no として式をくみたてる。
非保存で。
Let([
$fn="フィールド";
$no=20;
$cr=¶;
$result="";
$f="Case(
$no < 1;$result;
Let([$result=GetField ($fn & $no ) & Case($no<10;$cr) & $result;
$no=$no-1
];Evaluate($f))
)"
];
No. & $cr & Evaluate($f)
)
Offline
教えていただいた方法で無事解決することができました。
ありがとうございました。
Offline
Pages: 1
[ Generated in 0.004 seconds, 7 queries executed - Memory usage: 513.09 KiB (Peak: 517.63 KiB) ]