Get(LastError)で、まずは「安全なエラー処理」から始めよう
FileMakerでスクリプトを作っていると、「ちゃんと動いているように見えるのに、なぜか結果がおかしい」「ユーザーが何かミスしても、そのままスルーされてしまう」といった経験はないでしょうか。
こうした「気づきにくいトラブル」を防ぐ第一歩が、FileMakerの関数 Get(LastError) を使ったエラー処理です。
この記事では、難しい専門用語はなるべく避けて、Get(LastError)を使った基本的なエラー処理の考え方と、実際の使い方を、初心者でも分かりやすいように解説します。
Get(LastError)とは?ざっくりイメージをつかむ
Get(LastError) は、「直前に実行したスクリプトステップの結果」を数字で教えてくれる関数です。
この数字を見て、「うまくいった(0)」「何か問題が起きた(0以外)」を判断できます。
- 0: 正常に実行できた
- 0以外: 何らかのエラーが起きた(例:レコードが見つからない、権限がない、保存できない など)
つまり、スクリプトの中で大事な処理をしたら、その直後にGet(LastError)をチェックすることで、問題があればきちんと対処できるようになります。
なぜGet(LastError)を使うべきなのか
エラー処理を入れていないと、次のような「困ったこと」が起こりがちです。
- 検索結果がゼロ件なのに、そのまま次の処理に進んでしまう
- 権限不足やネットワークエラーで保存できていないのに、ユーザーは気づかない
- データが更新できなかったのに、完了メッセージだけ出てしまう
Get(LastError)をチェックするだけでも、例えば次のような「安全な動き」に変えられます。
- エラーがあれば、ユーザーに分かりやすいメッセージを表示する
- エラーが出たら、その場で処理を止める
- 必要に応じてログ(履歴)を残す
これだけで、「何が起こったか分からない」状態をかなり防ぐことができます。
基本パターン:ステップ直後にGet(LastError)を確認する
最も基本的な使い方は、重要なステップの直後に「If」ステップでGet(LastError)をチェックする方法です。
例えば、「レコードを検索して、見つからなければメッセージを出して終わる」ようにしたい場合は、次のような流れになります。
実行するステップ例:
1. 検索実行(検索スクリプトなど)
2. If [ Get ( LastError ) ≠ 0 ]
カスタムダイアログを表示:
「該当するレコードが見つかりませんでした。」
Exit Script [ 結果: False ]
End If
3. (ここから先は、検索が成功したときだけ実行される処理)
ポイントは以下の2つです。
- チェックするのは、必ず「直前に実行したステップ」に対してということ。
- エラーが出たら「何をするか」をはっきり決めておくこと(中断する/メッセージを出す など)。
よくある場面別:Get(LastError)の活用例
1. レコードの作成・編集・削除
「新規レコード/要求」「レコードを削除」などの後も、エラーが出ることがあります。例えば権限の制限が厳しいファイルでは、思ったように作成・削除できないこともあります。
新規レコード/要求
If [ Get ( LastError ) ≠ 0 ]
カスタムダイアログを表示:
「レコードを作成できませんでした。権限やネットワーク状態を確認してください。」
Exit Script [ 結果: False ]
End If
2. ファイルのインポート・エクスポート
インポートやエクスポートは、ファイルが見つからない・権限がないなどで失敗することがあります。大量データを扱う場面では、必ずエラーを確認することをおすすめします。
レコードをインポート
If [ Get ( LastError ) ≠ 0 ]
カスタムダイアログを表示:
「インポートに失敗しました。ファイルの場所や形式を確認してください。」
Exit Script
End If
3. 外部データソースや、ネットワークが絡む処理
外部SQL参照や、外部ファイルサーバー、Web公開など、ネットワークに依存する処理は、環境によってエラーが出やすい部分です。
このようなステップの直後には、必ずGet(LastError)を入れておくと安心です。
「とりあえずこれだけ」は押さえたい基本ルール
本格的なエラー処理を組み始めると、ログ記録や詳細な分岐など、やりたいことはいろいろ出てきます。
ただ、まず最初に押さえたいのは、以下の「最低限のルール」です。
- 大事なステップの直後には、必ずGet(LastError)をチェックする
- エラーが0以外なら、その場で「どうするか」を決めておく
(メッセージを出す/処理を中止する/ログに残す など) - スクリプトの途中でエラーを無視して進めない
⇒ 後で原因不明の不具合になりやすい
エラー番号ごとに細かく分けたいとき
慣れてきたら、Get(LastError)の結果によって、もう少し細かく処理を変えることもできます。
- 401: 該当するレコードが見つからない
- …: 他にも多くのエラー番号が定義されています
例えば、「レコードがないとき」と「別の原因で失敗したとき」で、メッセージを変えたいような場合です。
検索実行
Set Variable [ $error ; Value: Get ( LastError ) ]
If [ $error = 401 ]
カスタムダイアログを表示:
「条件に合うレコードはありませんでした。」
Exit Script
Else If [ $error ≠ 0 ]
カスタムダイアログを表示:
「検索中にエラーが発生しました。(エラー番号: " & $error & ")」
Exit Script
End If
このように、エラー番号を変数に一度入れておくと、ログとして残したり、後で画面に表示したりするときにも便利です。
まずは「重要なスクリプト」から始めてみる
全部のスクリプトに完璧なエラー処理を入れようとすると、途中で嫌になってしまうこともあります。
そこでおすすめなのは、次のような「影響が大きいスクリプト」から順にGet(LastError)を組み込む方法です。
- データを大量に削除・更新するスクリプト
- 請求書や売上など、重要データを扱うスクリプト
- 他システムとの連携、インポート・エクスポートを行うスクリプト
これだけでも、日々の運用の安心感はかなり変わってきます。
慣れてきたら、共通の「エラー処理用スクリプト」を作って呼び出すなど、より整理された作りにも発展させられます。
まとめ:Get(LastError)は「安全運転」のための必須チェック
FileMakerの開発では、「ちゃんと動いているように見えるけれど、裏でエラーが起きている」ことが少なくありません。
Get(LastError) をうまく使うことで、
- 問題が起きたときにすぐ気づける
- ユーザーに分かりやすいメッセージを出せる
- データの誤更新や、原因不明の不具合を減らせる
といった「安全運転」に近づけます。
まずは重要なスクリプトの中で、大事なステップの直後にGet(LastError)を挟むことから、少しずつ取り入れてみてください。