みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
filemakerAdvanced12 win7
いつもお世話になっております。
検索内容をCSVデータにエクスポートしたいのですが
CSVデータの1行目や最後の行などに固定データがはいるので
専用のテーブルにデータをコピーしてエクスポートする予定です。
そこでレコードをLoopで変数に以下のようにコピーをし
変数を設定[$ループ回数;値:GET(レコード総数)]
レコード/検索条件/ページへ移動[最初の]
Loop
変数を設定[$値($ループ回数);値:フィールド1]
Exit Loop If[$ループ回数;値:$ループ回数 - 1]
レコード/検索条件/ページへ移動[次の]
End Loop
と値の数値がループ回数で増えるようにしたいのですが、$には式が入れる事が出来ないので
断念しています。
"[$値($ループ回数)"の部分
何かいい方法はありますでしょうか。
>変数を設定[$ループ回数;値:GET(レコード総数)]
これが何を目的としているのかわかりません。
Loop以下もレコードを移動しながら変数を1ずつ減らしているだけで
どうやってコピーするのでしょう。
Offline
旅人さんのご指摘通り目的がよくわかりませんが、
別テーブルへ内容コピーは FM12始人 さんの書かれているようなインポートでできそうですね。
変数を動的に定義したいとしたら Evaluate でできますね。
一例)$$変数(カウント)という変数を定義する
変数を設定 [$カウント; 値:10]
Loop
変数を設定 [$ダミー; 値:Evaluate ( "let ( $$変数" & $カウント & "=" & $カウント & "; 1 )" )]
変数を設定 [$カウント; 値:$カウント - 1]
Exit Loop If [$カウント <= 0]
End Loop
Offline
ご返答ありがとうございます。
質問の以下の部分が間違っていました、申し訳ありません。
Exit Loop If[$ループ回数;値:$ループ回数 - 1]
ご返答頂いています、内容で理解できました。
ありがとうございます。
レコードのインポートは初めて使う機能で、別テーブルからでも、出来るんですね勉強になりました。
ただインポート先が2つのテーブルになるので、難しそうでした。
お伝えできていなくてすいません。
Evaluate let の関数も初めて使用するもので、一度勉強しながらやってみようと思います。
ありがとうございました。
Mozさん
EvaluateとLetの関数を確認しているのですが、どうもご教授頂きました
以下の式の意味が理解できません。
変数を設定 [$ダミー; 値:Evaluate ( "let ( $$変数" & $カウント & "=" & $カウント & "; 1 )" )]
特にletの内容です。
お手数でなければ、内容を教えて頂けますでしょうか。
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
レコードの数だけ変数を作って、そこへ各フィールド1の値を一つずつ入力
これをしようとしているのですか?
一つの変数に
改行
とか
,(コンマ)
とか、
変数を繰り返しにする
とかで入力すればいいのでは。
その方法は
どのようにエクスポートしたいかで決めればいいでしょう。
Exit Loop If[$ループ回数;値:$ループ回数 - 1]
意味不明です。
このステップの中は論理式にならないと。
Offline
Mozさんご丁寧にありがとうございます。
大変理解できました。
チポさんご返答ありがとうございます。
>レコードの数だけ変数を作って、そこへ各フィールド1の値を一つずつ入力
>これをしようとしているのですか?
その通りです。
Exit Loop if[$ループ回数;値:$ループ回数 - 1]
のところは
変数を設定[$ループ回数;値:$ループ回数 - 1]
Exit Loop if[$ループ回数 = 0]
の記述間違いでした。
何度もすいません。
おかげさまで、検索レコード数分の変数を設定できました。
次は別テーブルに移動してからのレコード数分のフィールドの設定の式がうまく反映しません。
どのような、式を入れればいいでしょうか。
よろしくお願いします。
Loop
新規レコード/検索条件
フィールド設定[別テーブル::フィールド1; "ここが分かりません" ]
変数を設定[$ループ回数;$ループ回数 - 1]
Exit Loop If [$ループ回数 = 0]
End Loop
すいません、分かりました。
ありがとうございました。
以前はお世話になりました。
こちらの式を使っておりますが、数値しか変数として登録されませんでした。
数値以外にも変数を登録する事は出来ますでしょうか。
よろしくお願いします。
どの式のことか分かりませんが、
Evaluate ( "let ( $$変数" & $カウント & "=" & $カウント & "; 1 )" )
上記の式だと、
変数の名前でなく値(2個目の $カウント の部分)に文字列を指定する場合は
Evaluate ( "let ( $$変数" & $カウント & "=" & Quote ( $カウント ) & "; 1 )" )
文字列が「 "" 」で囲われるように処理する必要があります。
Evaluate関数で計算される文字列を計算させた際に
FileMaker プラットフォームで正しく計算されるように考えましょう。
Offline
勉強になります。
ありがとうございます。
Pages: 1
[ Generated in 0.004 seconds, 9 queries executed - Memory usage: 545.84 KiB (Peak: 566.38 KiB) ]