「式で型が一致しません。」エラーの原因と対応方法

こんにちはmasalifeです。

今回はAccess初心者が必ず出会うエラー「式で型が一致しません。」の原因と対応方法について紹介します。

エラー内容は全然複雑ではないのでさくっと対応してみてください。

エラー原因

「式で型が一致しません。」のエラーは一般的にクエリのリレーションシップの作成時に発生します。

IDと会員IDでリレーションシップの作成時にエラーが発生しています。

このエラーが発生したら、まずリレーションシップを作成しているテーブルのフィールドのデータ型を確認してください。

【T_会員マスタ】のIDフィールドのデータ型は短いテキストに対し、

【T_来店管理】の会員IDフィールドのデータ型は数値型となっています。

このように「式で型が一致しません。」のエラーはテキスト型(短いテキスト)と数値型のフィールドでリレーションシップを作成する場合に発生することが大半です。

データベースの知識がないと、わざわざ文字か数値のどちらで扱おうかと考えないですよね。

無意識な分よく発生するエラーとなってしまいます。

エラーの対応方法

エラーの対応方法は簡単でデータ型を一致させればいいだけです。

データ型の変更方法はいくつかあるので合ったやり方を選んでください。

今回はT_来店管理テーブルの会員IDフィールドをテキスト型に変更します。

テーブルのデータ型を直で変更する

テーブルのデータ型を選択するだけなので、一番簡単な方法です。

ただ、この方法を試す場合は必ずテーブルのバックアップを取ってください。

データ型を変更することによって、データが失われる可能性があります。

教えるのが簡単なので、データ量が少なく、消えてないことがすぐ確認できる場合はこの方法を選択することが多いです。

クエリと関数を使って変更する(オススメ)

クエリと関数を使って型を変更する方法で、元のデータが破損することがないのでオススメです。

数値型をテキスト型に変更するCStr関数を使用します。

赤枠の部分、テキスト型会員ID:CStr([ID])と入力します。

循環参照エラーが発生しないようにフィールド名を変更しています。

循環参照エラーの関連記事

こんにちはmasalifeです。 今回はエラーの対応方法について紹介したいと思います。   テーマは【クエリでテーブルと同じフィールド名を使用して加工する方法】です。   どういうことか、簡単に例をあげてまとめると ・テーブルに短[…]


クエリを実行すると、

※テキスト型は左詰めで表示される

数値型の会員IDフィールドがテキスト型になっていることが確認できます。


このクエリを使って、リレーションを作成すれば「式で型が一致しません。」のエラーが回避出来ます。

型を変更するクエリが一つ増えるデメリットがありますが、データが失われることなく、元のテーブルをそのまま保持出来るためAccess機能を活かしているオススメの方法となります。

インポート時にデータ型を指定する

テーブルがテキストファイルやExcelファイルをインポートして作成されたものであれば インポート時にフィールドのデータ型を指定するのがいいです。

例えばExcelのセルが数値型であってもテーブルにはテキスト型でインポートするといった指定が出来ます。

リレーションを作成するテーブルのデータ型をあらかじめ確認しておいて、インポート時に指定することで【目次:2.1や2.2】の対応が不要となります。

詳しいやり方はこちらに記載しています。

関連記事

こんにちはmasalifeです。 今回ご紹介するのはExcelファイルやCSVファイルをAccessに取り込む際の豆知識です。 Accessを使いこなせるようになると、ExcelファイルやCSVファイルをAccessに[…]

データ定義クエリを使ってテーブルのデータ型を変更する

テーブルのデータ型を書き換える点は【目次:2.1 テーブルのデータ型を直で変更する 】と同じとなります。

データ定義クエリを使うメリットはマクロやVBAのプログラムに組み込むことで複数のフィールドのデータ型の変更を自動で行うことが出来るところにあります。

※一つのデータ定義クエリでは一つのフィールドしか変更出来ないので、複数変更したい場合はその数分だけのデータ定義クエリが必要となります。

データインポート→データ定義クエリでフィールドのデータ型を変更→・・・・・

といった一連のプログラムを作成しておけば、ユーザにテーブルやクエリを操作してもらう必要がなく、不意にAccessファイルを壊される心配もありません。


データ定義クエリはSQLで記述します。

【クエリデザイン】→【データ定義】をクリックします。


ALTER TABLE T_来店管理 ALTER COLUMN 会員ID TEXT;

と入力し保存します。

※スペースはすべて半角であることに注意してください。


作成したデータ定義クエリを実行することでデータ型を変更出来ます。

※実行する前に必ずテーブルのバックアップを取ってください。データ型を変更することで、テーブル内のデータが破損する可能性があります。

さいごに

最初は対応方法を覚えにくいかもしれませんが、何回も出会うことで自然と体が覚えてきます。

慣れないうちはこの記事を開いて対応してみてください。

最後まで読んでいただきありがとうございました。

>共に勉強しましょう!!

共に勉強しましょう!!



Accessの学習で悩んでいる方の相談に乗っています。
興味のある方は「Accessの勉強でお悩みの方へ」の記事を確認いただき、下部の【お問い合わせ】から連絡ください。