【式で型が一致しません】とは?、Accessへのインポートで起きます

『式で型が一致しません』
何の事を言っているのか、さっぱりですよね。
どこを調べても、式なんか無いんですから。

問題は、式じゃないんです。データの型です。
もしかして、Excelの表をインポートしていませんか?

スポンサーリンク



関わりのあるデータ同士は、”型”をそろえてください

生産した製品のデータや、作業者の工数などのいくつかの表を取り込んで、一つの表を作ることがあります。

取り込んだデータでテーブルを作って、クエリ内で結合しますよね。
キーとなる項目同士を関連付けして、結合プロパティでどのように関連付けるのかを決めます。

例えば、生産数の表価格の表の両方に管理番号があるとすると、それらを関連付けて売り上げ合計の表を作ったりできます。

2つの表の管理番号は、同じデータ型である必要があります。
人間の目で見ると同じ文字でも、コンピュータから見ると別物なんです。
ですから、同じ管理番号同士を結びつけるということができないというか、判断すらできないということです。

マッチングの画像




型が違うと、計算できないんです

数字と文字は足し算できない

accessに限りませんが、コンピュータの世界ではデータに種類があります。
文字の並びなのか、数字なのかで扱いが違ってきます。

例えば同じ”123”でも、百二十三なのかイチ・ニ・サンでは違いますね。
数字なら123+123=246ですが、文字の場合は123+123=123123になります。

数字と文字は足し算できないんです。


そのほか、データの長さでも別の型になります

また同じ数字や文字でも、長い物なのか短い物なのかでも分けます。
コンピュータの世界では、まずデータが入るの大きさを決めてスペース(メモリ上のです)を確保します。
お花見の時に、取り敢えずレジャーシートを敷いておくようなイメージでしょうか。
5人なら1枚でよいけど、15人来るかもしれない時は3枚用意しますよね。

また野郎だけならそのままですが、女性も来るなら座布団も持ってきたり。

花見の画像




データをインポートする時に、型が決まります

データの型はどこで指定するの?

インポートする表をExcel形式のデータとされている方は、気が付かないと思います。
データ型を指定するタイミングが無いんですね。
Accessが自動的に判断して、インポートしてしまいます。

Excelデータをインポートする時の画面の様子です。
先頭のデータを見出しに使うかどうかの選択しかできません。

Excelでインポートの画像




表をCSV(テキストデータ)にしてみてください

インポートするExcelデータを一旦CSV形式で保存しなおしてください。
そのCSVデータをインポートです。
すると、このような画面になります。

フィールド毎にデータ型を選択できますね。

CSVをインポートの画像




なぜ自動判別ではダメなのか?

ここで疑問が湧くと思います。
同じ管理番号なのだから、同じデータ型になるはず・・・では?

短いテキスト型の画像
長整数型の画像

CSV形式のデータをインポートしようとしている画面です。
上は短いテキスト型で、下は長整数型になっています。
CSVでも、データの中身を見て自動的に判断はしてくれます。

上下で使ったデータは同じなのですが、順番を並び替えています。
数字だけが先頭の方に来ている時は長整数型と判定して、英文字が見えた時はテキスト型としています。

ですので、データの並び方で判定が変わってしまうんです。
自動で判定させると、どちらになるかわかりません。




ここで見ていただきたいのが、これです。

数字なのにテキスト型の画像

先頭は数字だけなのに、判定は短いテキスト型になっています。
どうも先頭から16個目までを見て、どのデータ型にするか決めているようです。




結論:表はCSVにして、データ型をそろえられるようにしましょう

表は最初からCSV形式で作りましょう

Excelになっている物を1つ1つCSVに変換するのは大変です。
インポートする表は、CSV形式で作っておきましょう。
これが一番だと思います。

データ型が違っている時はどうすれば?

ここで、リンクテーブルを作ったのはいいけれども、後からデータ型が違っていることに気が付いた時はどうするか?

もう一度、リンクテーブルを作ってください。
そして最後に同じ名前で上書き保存すれば、修正したことになります。



以上、参考になればうれしいです。

最後までお読みいただきまして、ありがとうございました。



スポンサーリンク