みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
win7、FM8
「ファイル名」というフィールドがあり、総レコード数が1000件ほどあります。
「面付数」というグローバルフィールドを作り、
「面付数」に例えば「30」を入力し、スクリプト実行で.xls書き出しをしたいのですが
その際、エクセルで開いた時に
A列の1行目から30行目までにレコード1~30のフィールド名、
B列の1行目から30行目までにレコード31~60のフィールド名、
C列の1行目から30行目までにレコード61~90のフィールド名、
・
・
・
最後の列は余ったレコード分のフィールド名という風に
書き出したいのですが、何か良い方法はありますでしょうか?
Offline
あ、すいません
書き出したいのはフィールド名ではなく、ファイル名です
Offline
FMのレコードがエクセルの行
フィールドが列
になりますから、
ご希望の行列を逆に書き出して、
エクセルでコピペで行列を入れ替えた方が考えが簡単でしょう。
30フィールドを持つ別テーブルを作って、
元のテーブルのレコードの値を入力。
スクリプトでできますね。
Offline
.xlsファイルのFM内生成は出来ないので、代って.csvファイルを生成してExcelへ受け渡すようにしては如何でしょう。
グローバルフィールドにcsvドキュメントを「全置換」スクリプトで計算生成して、それを「フィールド内容のエキスポート」します。
全置換の値を得る計算式は、
Let([
$n=テーブル::面付数;
$row=
Case(
Mod(Get(レコード番号);$n) and Get(レコード番号)<>Get(対象レコード数); Case(IsEmpty($row); "\""; $row&",\"")&テーブル::ファイル名&"\"";
Let([$csv=List($csv; $row&",\""&テーブル::ファイル名&"\"")]; "")
)
];
Case(Get(レコード番号)=Get(対象レコード数); Substitute($csv; [¶;Char(13)&Char(10)]))
)
Offline
大変勉強になりました。
ありがとうございます。
Offline
Pages: 1
[ Generated in 0.004 seconds, 7 queries executed - Memory usage: 508.22 KiB (Peak: 514.92 KiB) ]