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

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

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

You are not logged in.

Announcement

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


#1 2016-05-09 14:57:53

cybe
Member

該当の数でレコードを分割して書き出したい

win7、FM8

「ファイル名」というフィールドがあり、総レコード数が1000件ほどあります。
「面付数」というグローバルフィールドを作り、
「面付数」に例えば「30」を入力し、スクリプト実行で.xls書き出しをしたいのですが
その際、エクセルで開いた時に
A列の1行目から30行目までにレコード1~30のフィールド名、
B列の1行目から30行目までにレコード31~60のフィールド名、
C列の1行目から30行目までにレコード61~90のフィールド名、
             ・
             ・
             ・
最後の列は余ったレコード分のフィールド名という風に
書き出したいのですが、何か良い方法はありますでしょうか?

Offline

#2 2016-05-09 14:59:39

cybe
Member

Re: 該当の数でレコードを分割して書き出したい

あ、すいません
書き出したいのはフィールド名ではなく、ファイル名です

Offline

#3 2016-05-09 18:14:55

チポ
Member

Re: 該当の数でレコードを分割して書き出したい

FMのレコードがエクセルの行
フィールドが列
になりますから、
ご希望の行列を逆に書き出して、
エクセルでコピペで行列を入れ替えた方が考えが簡単でしょう。


30フィールドを持つ別テーブルを作って、
元のテーブルのレコードの値を入力。

スクリプトでできますね。

Offline

#4 2016-05-09 18:47:27

Hiro
Member

Re: 該当の数でレコードを分割して書き出したい

.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

#5 2016-05-10 16:38:55

cybe
Member

Re: 該当の数でレコードを分割して書き出したい

大変勉強になりました。
ありがとうございます。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 509.1 KiB (Peak: 515.87 KiB) ]