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

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

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

You are not logged in.

Announcement

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


#1 2015-08-25 09:48:51

けんた
Guest

現在開いているファイル内のテーブル同士でインポートをするには

たびたびお世話になります。
Win7 FMA13

現在開いているファイル内にあるテーブルAをある条件でフィルタリングして、それをテーブルBにインポートをしたいと考えています。
スクリプトを組む場合、以下の手順でよいでしょうか?
何か抜け等があったらご指摘をお願いします。

レイアウト切替 [テーブルA]
エラー処理 [オン]
検索実行 [] ※検索条件は適当に
エラー処理 [オフ]
If [Get(最終エラー)= 0]
レイアウト切替 [テーブルB]
変数を設定 [$path; 値:Get(ファイルパス)]
レコードのインポート[「$path」;一致するレコードを更新;シフトJIS]
End If
レイアウト切替 [元のレイアウト]

※上記では「一致するレコードを更新」としていますが、これは一つの例です。

#2 2015-08-25 11:40:15

scripter
Guest

Re: 現在開いているファイル内のテーブル同士でインポートをするには

特に問題なさそうですが
エラー処理 [オフ]
がIfの前にあるのがちょっと気持ち悪いです。
Get(最終エラー)に影響しないスクリプトステップの一覧ってどこかにありましたっけ。

#3 2015-08-25 13:31:53

チポ
Member

Re: 現在開いているファイル内のテーブル同士でインポートをするには

エラー処理 [オフ]

とすると、
その後の最終エラーが拾えなくなっちゃいますよ。


変数を設定 [$path; 値:Get(ファイルパス)]
レコードのインポート[「$path」;一致するレコードを更新;シフトJIS]

インポートのソースファイルが自ファイルですから、
インポートステップのファイル指定に
自ファイルの相対パスを入れておけばいいですよね。

Offline

#4 2015-08-25 15:53:32

Moz
Member

Re: 現在開いているファイル内のテーブル同士でインポートをするには

エラー処理は FileMaker が出すアプリケーションとしての
エラーダイアログを表示しなくなるだけなのでオンオフ関係なくエラーは拾えます。
オフの状態ではエラーがダイアログを表示するエラーが出た場合、
If でエラーを拾う前にダイアログが出てしまうので必要に応じてオンオフするのがベストプラクティスでしょう。

Last edited by Moz (2015-08-25 15:54:19)

Offline

#5 2015-08-25 21:19:22

Shin
Member

Re: 現在開いているファイル内のテーブル同士でインポートをするには

けんた wrote:

レイアウト切替 [テーブルA]
エラー処理 [オン]
検索実行 [] ※検索条件は適当に
エラー処理 [オフ]
If [Get(最終エラー)= 0]
レイアウト切替 [テーブルB]
変数を設定 [$path; 値:Get(ファイルパス)]
レコードのインポート[「$path」;一致するレコードを更新;シフトJIS]
End If
レイアウト切替 [元のレイアウト]

これだと、If 分が拾うのは、エラー処理[オフ] が出すエラーだけ(現実にエラーが出る事は無いでしょう)で、検索実行でのエラーは拾えません。
エラー処理[オフ] は、最後に置くのが良いかも。
また、ファイルを共有しているのでしたら、そのパスで良かったかな?

Offline

#6 2015-08-26 02:25:44

けんた
Guest

Re: 現在開いているファイル内のテーブル同士でインポートをするには

皆様、アドバイス感謝します。

Shin wrote:

これだと、If 分が拾うのは、エラー処理[オフ] が出すエラーだけ(現実にエラーが出る事は無いでしょう)で、検索実行でのエラーは拾えません。
エラー処理[オフ] は、最後に置くのが良いかも。

そのようですね。基本的にスクリプトステップを1行実行する度に最終エラー値は変動していくようです。デバッガでも確認できました。
また、エラー処理についてヘルプを確認したところ、「Get ( 最終エラー ) は、テストするスクリプトステップの直後で使用してください。 間に正常なステップがあると処理するエラーコードが消去される場合があります。」とありました。

Shin wrote:

また、ファイルを共有しているのでしたら、そのパスで良かったかな?

ネットワーク経由でファイル共有しているPCから、意図した値を取得できていることを確認しましたので大丈夫そうです。

#7 2015-08-26 09:40:35

scripter
Guest

Re: 現在開いているファイル内のテーブル同士でインポートをするには

scripter wrote:

Get(最終エラー)に影響しないスクリプトステップの一覧ってどこかにありましたっけ。

ここにあった。
http://help.filemaker.com/app/answers/d … sterror%29
FM10からの変更ですね。
FileMaker Pro 10, all script control steps never clear LastError any more.
だけど[all]といいながら
Script control steps が (if, else, else if, end if, loop, exit loop, end loop, exit script, and halt script)
に限定されてるのが、なんだかなあ、です。
結局「気持ち悪い」ではすまなかったのね...

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 518.64 KiB (Peak: 523.55 KiB) ]