FM便利ネタ:FileMakerエラーコードとメッセージの処理

11月に入り、いよいよ秋らしい気候になってまいりましたが、皆さま如何お過ごしでしょうか?

FileMakerのエラー処理の時、Get( 最終エラー )で番号は取れるけど、その内容ってエラーコード表みて確認しないといけないんでちょっと面倒ですよね。

そこで。。。
FM16からは便利なJSONが使えるのでこのエラーデータをグローバル変数JSON化しておいて、あとは必要なところで呼び出せばいいんじゃないかとおもってやってみたら結構便利なんで、これを公開します!

まずは、ソリューションファイルの起動時などに以下のようなスクリプトでグロバル変数にエラーコードJSONを保存しておきます。準備はこれだけ。
※JSONの内容はエラーコードが多いので面倒ですが、下にコピペできるようにしてありますよ(^^)/.

変数を設定[ $FMError ; 値:JSONSetElement ( $json ;…..]

あとは必要なところにエラー発生時の処理を書き込みます。
例えばこんな感じ。

If[ Get( 最終エラー ) ≠ 0 ]
カスタムダイアログを表示[“Error!]”;”[” & Get ( 最終エラー ) & “]” & JSONGetElement ( $$FMError ; Get ( 最終エラー ) )]
現在のスクリプト終了[テキスト結果:]
End If

コントロール画面

実際のエラー発生時にはこんな感じです。

これだけで、あらゆる場所で使いまわしができるエラー表示メッセージが搭載できるのでとっても便利です。

実際にコード書くのは面倒くさいけど、ここに記載しておくんでコピペで利用できますよ。(^^)/

===ここから(FileMakerPro 17用エラーコード)===
JSONSetElement ( $json ;
[ “1” ; “原因不明のエラー” ; JSONString ];
[ “0” ; “エラーなし” ; JSONString ];
[ “1” ; “ユーザによるキャンセル” ; JSONString ];
[ “2” ; “メモリエラー” ; JSONString ];
[ “3” ; “コマンドが使用できません (たとえば誤ったオペレーティングシステムや誤ったモードなど)” ; JSONString ];
[ “4” ; “コマンドが見つかりません” ; JSONString ];
[ “5” ; “コマンドが無効です (たとえば、[フィールド設定] スクリプトステップに計算式が指定されていない場合など)” ; JSONString ];
[ “6” ; “ファイルが読み取り専用です” ; JSONString ];
[ “7” ; “メモリ不足” ; JSONString ];
[ “8” ; “空白の結果” ; JSONString ];
[ “9” ; “アクセス権が不十分です” ; JSONString ];
[ “10” ; “要求されたデータが見つかりません” ; JSONString ];
[ “11” ; “名前が有効ではありません” ; JSONString ];
[ “12” ; “名前がすでに存在します” ; JSONString ];
[ “13” ; “ファイルまたはオブジェクトが使用中です” ; JSONString ];
[ “14” ; “範囲外” ; JSONString ];
[ “15” ; “0 で割ることができません” ; JSONString ];
[ “16” ; “処理に失敗したため再試行が必要です (たとえば、ユーザクエリーなど)” ; JSONString ];
[ “17” ; “外国語の文字セットの UTF-16 への変換に失敗しました” ; JSONString ];
[ “18” ; “続行するには、クライアントはアカウント情報を指定する必要があります” ; JSONString ];
[ “19” ; “文字列に A から Z、a から z、0 から 9 (ASCII) 以外の文字が含まれています” ; JSONString ];
[ “20” ; “コマンドまたは操作がスクリプトトリガによってキャンセルされました” ; JSONString ];
[ “21” ; “リクエストがサポートされていません (ハードリンクに対応していないファイルシステムにハードリンクを作成しようとした場合など)” ; JSONString ];
[ “100” ; “ファイルが見つかりません” ; JSONString ];
[ “101” ; “レコードが見つかりません” ; JSONString ];
[ “102” ; “フィールドが見つかりません” ; JSONString ];
[ “103” ; “リレーションシップが見つかりません” ; JSONString ];
[ “104” ; “スクリプトが見つかりません” ; JSONString ];
[ “105” ; “レイアウトが見つかりません” ; JSONString ];
[ “106” ; “テーブルが見つかりません” ; JSONString ];
[ “107” ; “索引が見つかりません” ; JSONString ];
[ “108” ; “値一覧が見つかりません” ; JSONString ];
[ “109” ; “アクセス権セットが見つかりません” ; JSONString ];
[ “110” ; “関連テーブルが見つかりません” ; JSONString ];
[ “111” ; “フィールドの繰り返しが無効です” ; JSONString ];
[ “112” ; “ウインドウが見つかりません” ; JSONString ];
[ “113” ; “関数が見つかりません” ; JSONString ];
[ “114” ; “ファイル参照が見つかりません” ; JSONString ];
[ “115” ; “メニューセットが見つかりません” ; JSONString ];
[ “116” ; “レイアウトオブジェクトが見つかりません” ; JSONString ];
[ “117” ; “データソースが見つかりません” ; JSONString ];
[ “118” ; “テーマが見つかりません” ; JSONString ];
[ “130” ; “ファイルが損傷しているか見つからないため、再インストールする必要があります” ; JSONString ];
[ “131” ; “言語パックファイルが見つかりません” ; JSONString ];
[ “200” ; “レコードアクセスが拒否されました” ; JSONString ];
[ “201” ; “フィールドを変更できません” ; JSONString ];
[ “202” ; “フィールドアクセスが拒否されました” ; JSONString ];
[ “203” ; “ファイルに印刷するレコードがないか、入力したパスワードでは印刷できません” ; JSONString ];
[ “204” ; “ソート優先順位に指定されたフィールドにアクセスできません” ; JSONString ];
[ “205” ; “ユーザに新規レコードを作成するアクセス権がありません。既存のデータはインポートしたデータで上書きされます” ; JSONString ];
[ “206” ; “ユーザにパスワードの変更アクセス権がないか、変更可能なファイルではありません” ; JSONString ];
[ “207” ; “ユーザにデータベーススキーマを変更するアクセス権がないか、変更可能なファイルではありません” ; JSONString ];
[ “208” ; “パスワードに十分な文字が含まれていません” ; JSONString ];
[ “209” ; “既存のパスワードと新規パスワードを同一にすることはできません” ; JSONString ];
[ “210” ; “ユーザアカウントが非アクティブです” ; JSONString ];
[ “211” ; “パスワードが期限切れです” ; JSONString ];
[ “212” ; “ユーザアカウントまたはパスワードが無効です。再試行してください” ; JSONString ];
[ “214” ; “ログイン試行回数が多すぎます” ; JSONString ];
[ “215” ; “管理者権限は複製できません” ; JSONString ];
[ “216” ; “ゲストアカウントは複製できません” ; JSONString ];
[ “217” ; “ユーザに管理者アカウントを変更する十分なアクセス権がありません” ; JSONString ];
[ “218” ; “パスワードとパスワードの確認が一致しません” ; JSONString ];
[ “300” ; “ファイルがロックされているか、使用中です” ; JSONString ];
[ “301” ; “別のユーザがレコードを使用中です” ; JSONString ];
[ “302” ; “別のユーザがテーブルを使用中です” ; JSONString ];
[ “303” ; “別のユーザがデータベーススキーマを使用中です” ; JSONString ];
[ “304” ; “別のユーザがレイアウトを使用中です” ; JSONString ];
[ “306” ; “レコード修正 ID が一致しません” ; JSONString ];
[ “307” ; “ホストとの通信エラーのためトランザクションをロックできませんでした” ; JSONString ];
[ “308” ; “別のユーザがテーマを使用しておりロックされています” ; JSONString ];
[ “400” ; “検索条件が空です” ; JSONString ];
[ “401” ; “検索条件に一致するレコードがありません” ; JSONString ];
[ “402” ; “選択したフィールドはルックアップの照合フィールドではありません” ; JSONString ];
[ “404” ; “ソート順が無効です” ; JSONString ];
[ “405” ; “指定したレコード数が除外可能なレコード数を超過しています” ; JSONString ];
[ “406” ; “全置換またはシリアル番号の再入力に指定された条件が無効です” ; JSONString ];
[ “407” ; “片方または両方の照合フィールドが欠けています (無効なリレーションシップ)” ; JSONString ];
[ “408” ; “指定されたフィールドのデータが不適切なためこの処理を実行できません” ; JSONString ];
[ “409” ; “インポート順が無効です” ; JSONString ];
[ “410” ; “エクスポート順が無効です” ; JSONString ];
[ “412” ; “ファイルの修復に誤ったバージョンの FileMaker Pro Advanced が使用されました” ; JSONString ];
[ “413” ; “指定されたフィールドのフィールドタイプが不適切です” ; JSONString ];
[ “414” ; “レイアウトに結果を表示できません” ; JSONString ];
[ “415” ; “1 つまたは複数の必要な関連レコードが使用できません” ; JSONString ];
[ “416” ; “データソーステーブルからの主キーが必要です” ; JSONString ];
[ “417” ; “ファイルがサポートされているデータソースではありません” ; JSONString ];
[ “418” ; “フィールドへの INSERT 操作中に内部エラーが発生しました” ; JSONString ];
[ “500” ; “日付の値が入力値の制限を満たしていません” ; JSONString ];
[ “501” ; “時刻の値が入力値の制限を満たしていません” ; JSONString ];
[ “502” ; “数字の値が入力値の制限を満たしていません” ; JSONString ];
[ “503” ; “フィールドの値が入力値の制限オプションに指定されている範囲内に入っていません” ; JSONString ];
[ “504” ; “フィールドの値が入力値の制限オプションで要求されているように固有の値になっていません” ; JSONString ];
[ “505” ; “フィールドの値が入力値の制限オプションで要求されているようにファイル内の既存値になっていません” ; JSONString ];
[ “506” ; “フィールドの値が入力値の制限オプションに指定されている値一覧に含まれていません” ; JSONString ];
[ “507” ; “フィールドの値が入力値の制限オプションに指定されている計算式を満たしません” ; JSONString ];
[ “508” ; “検索モードに無効な値が入力されました” ; JSONString ];
[ “509” ; “フィールドに有効な値が必要です” ; JSONString ];
[ “510” ; “関連する値が空であるか、使用できません” ; JSONString ];
[ “511” ; “フィールド内の値が最大文字数を超過しました” ; JSONString ];
[ “512” ; “レコードがすでに別のユーザによって変更されています” ; JSONString ];
[ “513” ; “検証は指定されていませんがフィールドにデータが一致しません” ; JSONString ];
[ “600” ; “印刷エラーが発生しました” ; JSONString ];
[ “601” ; “ヘッダとフッタの高さを加算するとページの高さを超えます” ; JSONString ];
[ “602” ; “現在の段数設定ではボディ部分がページ内に収まりません” ; JSONString ];
[ “603” ; “印刷接続が遮断されました” ; JSONString ];
[ “700” ; “インポートできないファイルタイプです” ; JSONString ];
[ “706” ; “EPS ファイルにプレビューイメージがありません” ; JSONString ];
[ “707” ; “グラフィックの変換ファイルが見つかりません” ; JSONString ];
[ “708” ; “ファイルをインポートできないか、ファイルをインポートするにはカラーモニタが必要です” ; JSONString ];
[ “711” ; “インポートの変換ファイルが見つかりません” ; JSONString ];
[ “714” ; “入力したパスワードでは設定されている権限が不足しているためこの操作は認められていません” ; JSONString ];
[ “715” ; “指定された Excel ワークシートまたは名前の付いた範囲がありません” ; JSONString ];
[ “716” ; “ODBC インポートでは、DELETE、INSERT、または UPDATE を使用する SQL クエリーは使用できません” ; JSONString ];
[ “717” ; “インポートまたはエクスポートを続行するための十分な XML/XSL 情報がありません” ; JSONString ];
[ “718” ; “(Xerces からの) XML ファイルの解析エラーです” ; JSONString ];
[ “719” ; “(Xalan からの) XSL を使用した XML 変換エラーです” ; JSONString ];
[ “720” ; “エクスポート時のエラー。対象のドキュメントフォーマットでは繰り返しフィールドはサポートされていません” ; JSONString ];
[ “721” ; “パーサまたはトランスフォーマで原因不明のエラーが発生しました” ; JSONString ];
[ “722” ; “フィールドのないファイルにデータをインポートすることはできません” ; JSONString ];
[ “723” ; “インポート先のテーブルでレコードを追加または変更する権限がありません” ; JSONString ];
[ “724” ; “インポート先のテーブルにレコードを追加する権限がありません” ; JSONString ];
[ “725” ; “インポート先のテーブルでレコードを変更する権限がありません” ; JSONString ];
[ “726” ; “ソースファイルに対象テーブルよりも多くのレコードが含まれています。一部のレコードがインポートされませんでした” ; JSONString ];
[ “727” ; “対象テーブルにソースファイルよりも多くのレコードが含まれています。一部のレコードが更新されませんでした” ; JSONString ];
[ “729” ; “インポート中にエラーが発生しました。レコードをインポートすることができません” ; JSONString ];
[ “730” ; “サポートされないバージョンの Excel。ファイルを現在の Excel フォーマットに変換して再試行してください” ; JSONString ];
[ “731” ; “インポート元のファイルにデータが含まれていません” ; JSONString ];
[ “732” ; “このファイルには内部に他のファイルが含まれているため、挿入できません” ; JSONString ];
[ “733” ; “テーブルをテーブル自体にインポートすることはできません” ; JSONString ];
[ “734” ; “このファイルタイプをピクチャとして表示することはできません” ; JSONString ];
[ “735” ; “このファイルタイプをピクチャとして表示することはできません。ファイルとして挿入および表示されます” ; JSONString ];
[ “736” ; “この形式にエクスポートするにはデータが大きすぎます。入らないデータは切り捨てられます” ; JSONString ];
[ “738” ; “インポートしようとしているテーマはすでに存在します” ; JSONString ];
[ “800” ; “ファイルをディスク上に作成できません” ; JSONString ];
[ “801” ; “システムディスクにテンポラリファイルを作成できません” ; JSONString ];
[ “802” ; “ファイルを開くことができません” ; JSONString ];
[ “803” ; “ファイルがシングルユーザに設定されているか、またはホストが見つかりません” ; JSONString ];
[ “804” ; “ファイルは現在の状態では読み取り専用として開くことができません” ; JSONString ];
[ “805” ; “ファイルが損傷しています。修復コマンドを使用してください” ; JSONString ];
[ “806” ; “このバージョンの FileMaker クライアントではファイルを開くことができません” ; JSONString ];
[ “807” ; “ファイルが FileMaker Pro Advanced のファイルではないか、重大な損傷があります” ; JSONString ];
[ “808” ; “アクセス権情報が壊れているため、ファイルを開くことができません” ; JSONString ];
[ “809” ; “ディスク/ボリュームがいっぱいです” ; JSONString ];
[ “810” ; “ディスク/ボリュームがロックされています” ; JSONString ];
[ “811” ; “テンポラリファイルを FileMaker Pro Advanced ファイルとして開くことができません” ; JSONString ];
[ “812” ; “ホストの容量を超えています” ; JSONString ];
[ “813” ; “ネットワーク上でレコードの同期エラーが発生しました” ; JSONString ];
[ “814” ; “最大数のファイルがすでに開いているため、ファイルを開くことができません” ; JSONString ];
[ “815” ; “ルックアップファイルを開くことができません” ; JSONString ];
[ “816” ; “ファイルを変換できません” ; JSONString ];
[ “817” ; “このソリューションに属していないため、ファイルを開くことができません” ; JSONString ];
[ “819” ; “リモートファイルのローカルコピーを保存できません” ; JSONString ];
[ “820” ; “ファイルが閉じています” ; JSONString ];
[ “821” ; “ホストによって接続解除されました” ; JSONString ];
[ “822” ; “FileMaker Pro Advanced ファイルが見つかりません。見つからないファイルを再インストールしてください” ; JSONString ];
[ “823” ; “ファイルをシングルユーザに設定できません。ゲストが接続しています” ; JSONString ];
[ “824” ; “ファイルが損傷しているか、FileMaker Pro Advanced のファイルではありません” ; JSONString ];
[ “825” ; “ファイルには保護ファイルを参照する権限がありません” ; JSONString ];
[ “826” ; “指定したファイルパスは有効なパスではありません” ; JSONString ];
[ “827” ; “ソースにデータが含まれていないか、ソースが参照であるためファイルは作成されませんでした” ; JSONString ];
[ “850” ; “パスがオペレーティングシステムで有効ではありません” ; JSONString ];
[ “851” ; “ディスクから外部ファイルを削除できません” ; JSONString ];
[ “852” ; “外部格納にファイルを書き込めません” ; JSONString ];
[ “853” ; “1 つ以上のオブジェクトの転送に失敗しました” ; JSONString ];
[ “900” ; “スペルチェックのエンジンにエラーが発生しています” ; JSONString ];
[ “901” ; “スペルチェック用のメイン辞書がインストールされていません” ; JSONString ];
[ “903” ; “共有ファイルではコマンドを使用できません” ; JSONString ];
[ “905” ; “コマンドを使用するにはファイルがアクティブである必要があります” ; JSONString ];
[ “906” ; “現在のファイルは共有されていません。コマンドはファイルが共有されている場合のみ使用することができます” ; JSONString ];
[ “920” ; “スペルチェックエンジンを初期化できません” ; JSONString ];
[ “921” ; “編集するユーザ辞書をロードできません” ; JSONString ];
[ “922” ; “ユーザ辞書が見つかりません” ; JSONString ];
[ “923” ; “ユーザ辞書が読み取り専用です” ; JSONString ];
[ “951” ; “予期しないエラーが発生しました (*)” ; JSONString ];
[ “952” ; “無効な FileMaker Data API トークン (*)” ; JSONString ];
[ “953” ; “FileMaker Data API で転送できるデータの制限を超過しました (*)” ; JSONString ];
[ “954” ; “サポートされていない XML 文法です (*)” ; JSONString ];
[ “955” ; “データベース名がありません (*)” ; JSONString ];
[ “956” ; “データベースセッションが最大数を超過しました (*)” ; JSONString ];
[ “957” ; “コマンドが競合しています (*)” ; JSONString ];
[ “958” ; “クエリーに引数がありません (*)” ; JSONString ];
[ “959” ; “カスタム Web 公開テクノロジーが無効です” ; JSONString ];
[ “960” ; “引数が無効です” ; JSONString ];
[ “1200” ; “一般的な計算エラーです” ; JSONString ];
[ “1201” ; “関数の引数が足りません” ; JSONString ];
[ “1202” ; “関数の引数が多すぎます” ; JSONString ];
[ “1203” ; “計算式が未完了です” ; JSONString ];
[ “1204” ; “数字、テキスト定数、フィールド名、または「(」を入れてください” ; JSONString ];
[ “1205” ; “コメントは「*/」で終了できません” ; JSONString ];
[ “1206” ; “テキスト定数は半角のダブルクォーテーションマークで終わらなければなりません” ; JSONString ];
[ “1207” ; “カッコが一致していません” ; JSONString ];
[ “1208” ; “演算子または関数が見つからないか、「(」は使用できません” ; JSONString ];
[ “1209” ; “名前 (フィールド名またはレイアウト名) が見つかりません” ; JSONString ];
[ “1210” ; “プラグイン関数またはスクリプトステップはすでに登録されています” ; JSONString ];
[ “1211” ; “この関数では一覧を使用できません” ; JSONString ];
[ “1212” ; “演算子 (+、-、* など) を入れてください” ; JSONString ];
[ “1213” ; “この変数はすでに Let 関数で定義されています” ; JSONString ];
[ “1214” ; “Average、Count、Extend、GetRepetition、Max、Min、NPV、StDev、Sum、および GetSummary 関数で、フィールドのみ必要な部分に式が使われています” ; JSONString ];
[ “1215” ; “この引数は取得関数の無効な引数です” ; JSONString ];
[ “1216” ; “GetSummary 関数の 1 番目の引数は、集計フィールドのみに限られます” ; JSONString ];
[ “1217” ; “区分けフィールドが無効です” ; JSONString ];
[ “1218” ; “数字を評価できません” ; JSONString ];
[ “1219” ; “フィールド固有の式にフィールドは使用できません” ; JSONString ];
[ “1220” ; “フィールドタイプは標準にするか、計算する必要があります” ; JSONString ];
[ “1221” ; “データタイプは数字、日付、時刻、またはタイムスタンプでなければなりません” ; JSONString ];
[ “1222” ; “計算式を保存できません” ; JSONString ];
[ “1223” ; “指定された関数はまだ実装されていません” ; JSONString ];
[ “1224” ; “指定された関数は存在しません” ; JSONString ];
[ “1225” ; “指定された関数はこのコンテキストではサポートされていません” ; JSONString ];
[ “1300” ; “指定された名前は使用できません” ; JSONString ];
[ “1301” ; “インポートまたは貼り付けられた関数の引数がファイル内の関数として同じ名前です” ; JSONString ];
[ “1400” ; “ODBC クライアントドライバの初期化に失敗しました。ODBC クライアントドライバが適切にインストールされていることを確認してください” ; JSONString ];
[ “1401” ; “環境の割り当てに失敗しました (ODBC)” ; JSONString ];
[ “1402” ; “環境の解放に失敗しました (ODBC)” ; JSONString ];
[ “1403” ; “切断に失敗しました (ODBC)” ; JSONString ];
[ “1404” ; “接続の割り当てに失敗しました (ODBC)” ; JSONString ];
[ “1405” ; “接続の解放に失敗しました (ODBC)” ; JSONString ];
[ “1406” ; “SQL API のチェックに失敗しました (ODBC)” ; JSONString ];
[ “1407” ; “ステートメントの割り当てに失敗しました (ODBC)” ; JSONString ];
[ “1408” ; “拡張エラー (ODBC)” ; JSONString ];
[ “1409” ; “エラー (ODBC)” ; JSONString ];
[ “1413” ; “通信リンクに失敗しました (ODBC)” ; JSONString ];
[ “1414” ; “SQL ステートメントが長すぎます” ; JSONString ];
[ “1450” ; “PHP アクセス権を拡張する操作が必要です (*)” ; JSONString ];
[ “1451” ; “現在のファイルをリモートにする操作が必要です” ; JSONString ];
[ “1501” ; “SMTP の認証に失敗しました” ; JSONString ];
[ “1502” ; “SMTP サーバーによって接続が拒否されました” ; JSONString ];
[ “1503” ; “SSL でエラーが発生しました” ; JSONString ];
[ “1504” ; “SMTP サーバーの接続を暗号化する必要があります” ; JSONString ];
[ “1505” ; “指定された認証方法は SMTP サーバーではサポートされていません” ; JSONString ];
[ “1506” ; “E メールメッセージは正常に送信されませんでした” ; JSONString ];
[ “1507” ; “SMTP サーバーにログインできませんでした” ; JSONString ];
[ “1550” ; “プラグインをロードできないか有効なプラグインではありません” ; JSONString ];
[ “1551” ; “プラグインをインストールできません。既存のプラグインを削除できないか、フォルダまたはディスクに書き込めません” ; JSONString ];
[ “1552” ; “プラグインにより返されました。プラグインのマニュアルを参照してください” ; JSONString ];
[ “1553” ; “プラグインにより返されました。プラグインのマニュアルを参照してください” ; JSONString ];
[ “1554” ; “プラグインにより返されました。プラグインのマニュアルを参照してください” ; JSONString ];
[ “1555” ; “プラグインにより返されました。プラグインのマニュアルを参照してください” ; JSONString ];
[ “1556” ; “プラグインにより返されました。プラグインのマニュアルを参照してください” ; JSONString ];
[ “1557” ; “プラグインにより返されました。プラグインのマニュアルを参照してください” ; JSONString ];
[ “1558” ; “プラグインにより返されました。プラグインのマニュアルを参照してください” ; JSONString ];
[ “1559” ; “プラグインにより返されました。プラグインのマニュアルを参照してください” ; JSONString ];
[ “1626” ; “プロトコルがサポートされていません” ; JSONString ];
[ “1627” ; “認証に失敗しました” ; JSONString ];
[ “1628” ; “SSL でエラーが発生しました” ; JSONString ];
[ “1629” ; “接続がタイムアウトになりました。タイムアウトの値は 60 秒です” ; JSONString ];
[ “1630” ; “URL 書式が正しくありません” ; JSONString ];
[ “1631” ; “接続に失敗しました” ; JSONString ];
[ “1632” ; “証明書の期限が切れています” ; JSONString ];
[ “1633” ; “証明書は自己署名です” ; JSONString ];
[ “1634” ; “証明書の検証エラーが発生しました” ; JSONString ];
[ “1635” ; “接続が暗号化されていません” ; JSONString ]
)
===ここまで===

是非、活用してみてくださいね!