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

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

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

You are not logged in.

Announcement

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


#1 2017-03-15 14:33:40

kaz797
Member

レコードをコピーして新しいレコードを作成したい。

データベースの挙動(どのくらい重くなるか)の確認作業を行おうとしています。
このため、1日分のデータを入力し、それを元に1月分のデータを作成したいのですが。
1日分のデータをコピーし、新しいレコードを作成し、これにコピーしたデータ(日付を除きます。)を貼り付けたいと思います。
その方法をお教えください。
また、この場合、レコードIdや作成日等の管理用データは、どのように処理したらよいですか。

Offline

#2 2017-03-15 14:39:51

Moz
Member

Re: レコードをコピーして新しいレコードを作成したい。

レコードを複製して日付とIDのフィールドだけ書き換えるスクリプトを作るだけで良いのでは?

Offline

#3 2017-03-15 14:53:36

kaz797
Member

Re: レコードをコピーして新しいレコードを作成したい。

具体的な方法を教えてください。
検索モードにして、コピーしたいレコードの日付を入力し、その日付のレコードを取り出して対象レコードにする。
と、ここまでは分かるのですが!

Offline

#4 2017-03-15 15:05:05

Moz
Member

Re: レコードをコピーして新しいレコードを作成したい。

「任意の1日のレコードと「日付」「ID」だけが違うレコードが多量に作りたい」ですよね?
任意の1日のレコードを検索するところまでは手動で作業して以下のスクリプトステップで。

レコード/検索条件複製
https://www.filemaker.com/help/15/fmp/j … quest.html

フィールド設定
https://www.filemaker.com/help/15/fmp/j … field.html

Loop
https://www.filemaker.com/help/15/fmp/j … /loop.html

スクリプトの例(Loop含む)
https://www.filemaker.com/help/15/fmp/j … mples.html


Loop
レコード/検索条件複製
フィールド設定(日付)
フィールド設定(ID)
Exit Loop If ( Get ( レコード総数 ) ≥ 10000 ) // 1万レコードの場合
End Loop

簡単な例ではこんな感じで。

FileMaker プラットフォーム の カスタムApp の挙動(パフォーマンス)はレコード数より構造に大きく依存します。
単純に作り始めたばかりのカスタムAppではいくらレコードを増やしたところで検証にはならないですよ。
大規模なカスタムAppでも構造が悪くなければ数千万レコード程度問題ではありません。

Last edited by Moz (2017-03-15 15:07:02)

Offline

#5 2017-03-15 15:09:35

kaz797
Member

Re: レコードをコピーして新しいレコードを作成したい。

対象レコードをすべて選択して、「レコードの複製」を行うと、1日分のレコードが複製されると思うのですが!
すべてを選択する方法がわかりません。

Offline

#6 2017-03-15 15:17:33

Moz
Member

Re: レコードをコピーして新しいレコードを作成したい。

そもそものデータベースの構造を書いてみて下さい。
1日1レコードと拝察していました。これでは的外れですね。失礼しました。

レコードをまとめて選択して複製を行うことはできません。ヘルプを読んで下さい。
https://www.filemaker.com/help/15/fmp/j … cords.html

1日分をエクスポートしてインポートして日付とIDを全置換などが考えられますね。

Last edited by Moz (2017-03-15 15:18:08)

Offline

#7 2017-03-15 15:38:12

kaz797
Member

Re: レコードをコピーして新しいレコードを作成したい。

申し訳ありませんでした。
当方、いま45日のFileMakerキャリアです。
上司が作成したFileMakerによるシステムを部署内で運用するように命を受けました。
時間を入力する繰り返しフィールドにスクリプトトリガが付いており、クリックするとスクリプトが動きます。
それぞれ2番目から最大4番目までの時間を入力する欄(繰り返しフィールドの一部)があり、クリックすると時間が入力される仕組みです。
しかし、スクリプト自体は複雑なものではないのですが、この「時間」のフィールドが他のテーブルの「時間」とリレーションが張られています。
その先のテーブルには、「時間」フィールドを使用した計算フィールド(非保存)があり、これがシステムを重くしている原因ではないかと考えています。
1回のクリックでスタンドアロンだと1秒未満ですが、ファイルの共有をすると1秒少々、サーバー利用の場合は2秒以上かかっています。
原因を特定するのは、現在の私の能力ではにわかには不可能ですので、データが増えたときの挙動を確認しようと思います。
これで、さらに重くなるようであれば、何か月あるいは何年にもわたる運用は困難ですので、根底から考え直していただこうと思っています。
メインのテーブルは、多ければ1日に120レコードが作られる予定です。

長々、書いて申し訳ありません。

Offline

#8 2017-03-15 16:27:26

kaz797
Member

Re: レコードをコピーして新しいレコードを作成したい。

Moz様

1日分をエクスポートしてインポートしようとしましたが、フィールドの名前や順序がばらばらで、とても直しきれません。
他の方法はないものでしょうか。

Offline

#9 2017-03-15 17:13:17

チポ
Member

Re: レコードをコピーして新しいレコードを作成したい。

スクリプトで

  コピーする分のレコードを検索
  何らかでソート
  最初のレコードへ

として、
以下を対象レコード数分Loopで繰返します。

  レコード複製
  日付書き換え
  次のレコードへ

レコードコピーは以上ですが、
対象レコードの変更、ソート等が有れば
それらを加えてステップを作ってください。

Offline

#10 2017-03-15 17:41:40

kaz797
Member

Re: レコードをコピーして新しいレコードを作成したい。

やはりスクリプトを作らないと無理でしょうか。
分かりました。
やってみます。
ありがとうございました。

Offline

#11 2017-03-15 23:38:13

Shin
Member

Re: レコードをコピーして新しいレコードを作成したい。

エクスポートの際に、merge フォーマットでエクスポート、インポートの際には照合名で照合させれば、簡単ですよ。

Offline

#12 2017-03-17 10:20:07

kaz797
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.007 seconds, 8 queries executed - Memory usage: 528.52 KiB (Peak: 549.43 KiB) ]