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

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

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

You are not logged in.

Announcement

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


#1 2014-12-09 18:33:08

ちゃっくん3
Guest

別テーブルへ内容コピー

filemakerAdvanced12 win7

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

検索内容をCSVデータにエクスポートしたいのですが

CSVデータの1行目や最後の行などに固定データがはいるので
専用のテーブルにデータをコピーしてエクスポートする予定です。

そこでレコードをLoopで変数に以下のようにコピーをし

変数を設定[$ループ回数;値:GET(レコード総数)]
レコード/検索条件/ページへ移動[最初の]
Loop
変数を設定[$値($ループ回数);値:フィールド1]
Exit Loop If[$ループ回数;値:$ループ回数 - 1]
レコード/検索条件/ページへ移動[次の]
End Loop

と値の数値がループ回数で増えるようにしたいのですが、$には式が入れる事が出来ないので
断念しています。
"[$値($ループ回数)"の部分

何かいい方法はありますでしょうか。

#2 2014-12-09 22:25:09

旅人
Member

Re: 別テーブルへ内容コピー

>変数を設定[$ループ回数;値:GET(レコード総数)]
これが何を目的としているのかわかりません。
Loop以下もレコードを移動しながら変数を1ずつ減らしているだけで
どうやってコピーするのでしょう。

Offline

#3 2014-12-10 08:43:23

Moz
Member

Re: 別テーブルへ内容コピー

旅人さんのご指摘通り目的がよくわかりませんが、
別テーブルへ内容コピーは FM12始人 さんの書かれているようなインポートでできそうですね。

変数を動的に定義したいとしたら Evaluate でできますね。

一例)$$変数(カウント)という変数を定義する

変数を設定 [$カウント; 値:10]
Loop
	変数を設定 [$ダミー; 値:Evaluate ( "let ( $$変数" & $カウント & "=" & $カウント & "; 1 )" )]
	変数を設定 [$カウント; 値:$カウント - 1]
	Exit Loop If [$カウント <= 0]
End Loop

Offline

#4 2014-12-10 11:35:40

ちゃっくん3
Guest

Re: 別テーブルへ内容コピー

ご返答ありがとうございます。

質問の以下の部分が間違っていました、申し訳ありません。
Exit Loop If[$ループ回数;値:$ループ回数 - 1]

ご返答頂いています、内容で理解できました。
ありがとうございます。

レコードのインポートは初めて使う機能で、別テーブルからでも、出来るんですね勉強になりました。
ただインポート先が2つのテーブルになるので、難しそうでした。
お伝えできていなくてすいません。

Evaluate let の関数も初めて使用するもので、一度勉強しながらやってみようと思います。

ありがとうございました。

#5 2014-12-10 15:58:05

ちゃっくん3
Guest

Re: 別テーブルへ内容コピー

Mozさん

EvaluateとLetの関数を確認しているのですが、どうもご教授頂きました
以下の式の意味が理解できません。

変数を設定 [$ダミー; 値:Evaluate ( "let ( $$変数" & $カウント & "=" & $カウント & "; 1 )" )]

特にletの内容です。
お手数でなければ、内容を教えて頂けますでしょうか。

#6 2014-12-10 16:25:24

Moz
Member

Re: 別テーブルへ内容コピー

FileMaker Pro Advanced をご利用とのことなので、スクリプトを作成して実行してみて下さい。
データビューアで変数の確認ができます。

実行した結果、$$変数1 〜 $$変数10 が作成されると思います。

通常、変数の名前は計算式では定義できません。
例)$変数 & 1 = "変数"

しかし、Let関数内で変数が定義できることと
Evaluate関数が文字列を計算式として計算ができることを利用すれば
計算式として計算させる文字列に変数の値やフィールドの値を利用することができます。
つまり、変数の名前も計算式で定義できるということです。

Evaluate ( "let ( $$変数" & $カウント & "=" & $カウント & "; 1 )" )

この場合は計算式として計算する文字列を作成する際に $カウント という変数を利用していますので

 Let ( $$変数1 = 1 ; 1 ) 〜 Let ( $$変数10 = 10 ; 1 )

このような文字列が作成され、Evaluate関数によって計算されます。
その結果、$$変数1 〜 $$変数10 が動的に定義されます。
どれも結果は「1」が返りますが、重要なのは $$変数1 〜 $$変数10 を定義している部分です。

Last edited by Moz (2014-12-10 16:26:45)

Offline

#7 2014-12-10 17:37:33

チポ
Member

Re: 別テーブルへ内容コピー

レコードの数だけ変数を作って、そこへ各フィールド1の値を一つずつ入力
これをしようとしているのですか?


一つの変数に
  改行
とか
  ,(コンマ)
とか、
  変数を繰り返しにする
とかで入力すればいいのでは。

その方法は
どのようにエクスポートしたいかで決めればいいでしょう。


Exit Loop If[$ループ回数;値:$ループ回数 - 1]

意味不明です。
このステップの中は論理式にならないと。

Offline

#8 2014-12-11 10:29:49

ちゃっくん3
Guest

Re: 別テーブルへ内容コピー

Mozさんご丁寧にありがとうございます。
大変理解できました。

チポさんご返答ありがとうございます。

>レコードの数だけ変数を作って、そこへ各フィールド1の値を一つずつ入力
>これをしようとしているのですか?

その通りです。
Exit Loop if[$ループ回数;値:$ループ回数 - 1]
のところは

変数を設定[$ループ回数;値:$ループ回数 - 1]
Exit Loop if[$ループ回数 = 0]

の記述間違いでした。

#9 2014-12-11 15:34:39

ちゃっくん3
Guest

Re: 別テーブルへ内容コピー

何度もすいません。

おかげさまで、検索レコード数分の変数を設定できました。

次は別テーブルに移動してからのレコード数分のフィールドの設定の式がうまく反映しません。

どのような、式を入れればいいでしょうか。
よろしくお願いします。


Loop
新規レコード/検索条件
フィールド設定[別テーブル::フィールド1; "ここが分かりません" ]
変数を設定[$ループ回数;$ループ回数 - 1]
Exit Loop If [$ループ回数 = 0]
End Loop

#10 2014-12-12 09:31:21

ちゃっくん3
Guest

Re: 別テーブルへ内容コピー

すいません、分かりました。

ありがとうございました。

#11 2014-12-22 16:40:22

ちゃっくん3
Guest

Re: 別テーブルへ内容コピー

以前はお世話になりました。

こちらの式を使っておりますが、数値しか変数として登録されませんでした。
数値以外にも変数を登録する事は出来ますでしょうか。

よろしくお願いします。

#12 2014-12-23 08:52:40

Moz
Member

Re: 別テーブルへ内容コピー

どの式のことか分かりませんが、

Evaluate ( "let ( $$変数" & $カウント & "=" & $カウント & "; 1 )" )

上記の式だと、
変数の名前でなく値(2個目の $カウント の部分)に文字列を指定する場合は

Evaluate ( "let ( $$変数" & $カウント & "=" & Quote ( $カウント ) & "; 1 )" )

文字列が「 "" 」で囲われるように処理する必要があります。

Evaluate関数で計算される文字列を計算させた際に
FileMaker プラットフォームで正しく計算されるように考えましょう。

Offline

#13 2014-12-24 11:01:02

ちゃっくん3
Guest

Re: 別テーブルへ内容コピー

勉強になります。

ありがとうございます。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.004 seconds, 9 queries executed - Memory usage: 545.84 KiB (Peak: 566.38 KiB) ]