『ながっちゃん』のページ

気まぐれ兄ちゃんの独り言

#3[ACS]サブフォームを使っていて「式が正しく入力されていないか、複雑すぎるために評価できません。たとえば、数式に複雑な要素が多すぎます。変数に式の一部を割り当て、式を簡単にしてください。 」のエラーメッセージが出る。

内容

サブフォームを使っているフォームを表示する時、間違った式や非常に複雑な式を使っていないにもかかわらず「式が正しく入力されていないか、複雑すぎるために評価できません。たとえば、数式に複雑な要素が多すぎます。変数に式の一部を割り当て、式を簡単にしてください。 」のエラーメッセージが出ることがあります。

解説

 この原因は、フォームとサブフォームの間でリンクしているフィールドのデータ型が異なる場合に発生します。 フォームとサブフォームの間でリンクしているフィールドのデータ型を同じにすれば解決します。
 通常はデザインモードでフォームにサブフォームを配置し、サブフォームのプロパティでリンク子フィールドとリンク親フィールドを設定すめ場合、異なるデータ型のリンク子フィールドとリンク親フィールドを設定することはできません。しかし、同じデータ型のリンク子フィールドとリンク親フィールドを設定した後、フィールドのデータ型を変更してフォームを表示するとこのエラーが発生します。

再現サンプル

2つのテーブル「備品一覧」と「備品履歴」を作成します。
サンプルのテーブル1

サンプルのテーブル2

サブフォームとして表示するためテーブル「備品履歴」を基にしたフォーム「sub備品履歴」を作成します。
エラー再現サンプルのフォーム1

テーブル「備品一覧」を基にしたフォーム「備品一覧」を作成し、フォーム「sub備品履歴」をサブフォームとして配置します。
サブフォームのプロパティでリンク子フィールドとリンク親フィールドは共に"MainID"にします。
エラー再現サンプルのフォーム2

ここまでの操作で作成したフォーム「備品一覧」を表示してもエラーは起きません。

しかし、何らかの理由でテーブル「備品一覧」または「備品履歴」のフィールド「MainID」のデータ型を変更したとします。
たとえばテーブル「備品履歴」のフィールド「MainID」のデータ型を長整数型からテキスト型からに変更します。
エラー再現サンプルのテーブル1

これでフォーム「備品一覧」を表示すると次のエラーメッセージが表示されます。
エラーメッセージ

たとえばテーブル「備品履歴」のフィールド「MainID」のデータ型を長整数型に変更するとフォーム「備品一覧」は正常に表示されます。
エラー対策のサンプル