みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Fm12 win
実はタイトルどおりの現象が起きてしまいました。
$はスクリプト終了まで消えませんよね??
およそのスクリプトはこんな感じです。
変数を設定 $a=関連テーブルのフィールド(←結構量の多いHTML文章です)
LOOP
$aを使っていろいろと計算 $a自体は変化させない
EXIT LOOP IF ・・・
新規レコード追加
END LOOP
ループの1周目は問題ないのですが、
ループの2周目以降において$aの中身が消えてしまいます。
消えるタイミングをデータビューアで見ていると新規レコード追加の後のタイミングです。
ちなみに変数の設定をLOOP内にいれると消えません。
わざわざLOOPに入れる意味が無いのでLOOP外に置いたところ
このような現象になりました。
これってこういうものなのでしょうか?
それともバグ的なものなのでしょうか?
Offline
もう一度スクリプト見直してくたさい。
他の箇所で$a変数を設定していませんか?
何も変数を設定スクリプトステップだけではありません。
Let関数内で、カスタム関数内で、フィールド設定の自動入力で、などなど。
とおりすがりさんに追加で、
新規レコード作成で書き換わっているなら計算フィールドおよび
入力値の自動化の計算式で同じ変数名を使っている可能性も。
Offline
とおりすがりさん、Mozさん、ありがとうございます。
スクリプトを別の空のDBに貼ると問題なく、$aを$bにしても問題がなかったのでスクリプト的には問題なしとして、
Mozさんのフィールドについて調べてみました。
すると、あるフィールドの入力の自動化で、
Let ([ $a=・・・・・・
として同じ$aを使っているところがあり、$aはnullになる状態でした。これらをそれぞれ別の$にして修正したら直りました。
長年使っていますが、入力の自動化でLet使って設定した変数はスクリプトにもその値が共有されることはしりませんでした。
ひとつ勉強になりました。
お二方、ありがとうございました。
Offline
えっ!まだ懲りないですか?
何故Let内変数で、$変数 を使うんですか?
よく初心者系掲示板でLet内変数で$を使っている人がいますが、こういった事故を起こす要因となりますので、$を使わなければいけない状況以外で$を使うべきではありません。
懲りないのかと言われましても・・・w
よくよくみて見て見れば他の部分はこれまでも$使ってなくて、
なぜか今回の修正で無意識に$つけてました。しばらくFMにふれてなかったからですかね。
というか、これまで事故がなかったのでLET内の$のありなしなんて特に意識してませんでした。
そう考えると恐らく自分の思い通りには動いてはいるものの事故寸前の危険な箇所は多いのかなぁと。
後日、久々に新しくひとつ大きなのを作るのですが、これを機にいろいろとFMの基本を見直すきっかけになりました!
こうすればいいって情報は見つかりやすいですけど、これやっちゃダメ的なものってどっかにまとめてないもんですかね。
ありがとうございました!
Offline
Pages: 1
[ Generated in 0.004 seconds, 7 queries executed - Memory usage: 508.8 KiB (Peak: 515.62 KiB) ]