- ベストアンサー
Access Dlookupのエラーを解決する方法
- AccessのDlookup関数を使用してデータを表示させようとすると「#エラー」と表示され、抽出条件でデータ型が一致しないというエラーが発生します。
- Dlookup関数を正しく使用するためには、紐づけるフィールドのデータ型を確認し、抽出条件として指定する値も適切なデータ型で指定する必要があります。
- また、Dlookup関数の引数にはテーブル名、検索結果を取得するフィールド名、抽出条件を指定する必要があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
直接の回答は 「短いテキスト」の場合はこうです。 施設得意先: DLookUp("得意先","T_KNA1","通常納入使用駅 ='" & [T_MD-Net].[施設コード] & "'") ただし、 > Aテーブルの複数のフィルドからBテーブルの1つのフィルドに紐づけることはできない ということで、 デザインで、Bテーブルをあと2個追加し、 Aテーブルからそれぞれに結合するようにします。 これが普通の解決法です。 DLookUp は データ量が多ければ重いですし。
その他の回答 (1)
- bardfish
- ベストアンサー率28% (5029/17766)
それはデータベースの使い方ではないですね。Excelのような表計算の考え方です。 データベースと表計算は考え方は別物と思ってください。 で、どのような結果が望みですか? データベースですから、テーブルとテーブルを紐付けるためにはキーとなる項目が必要となります。Dlookup関数にもキーという概念はあありますがSQLでは使えないはずです。 Accessのクエリというのは中身を見てみればSQLという言語で構成されています。SQLは基本的にはAccessでもSQLServerでもOracleでもPostgreSQL、MySQLでも考え方は同じでローカルルールを覚えるだけで使えます。 T_MD-Netテーブルの3つの項目を連結した項目とキーとなる項目でクエリーを作り・・・と、SQLを組みながら見ていったのですが、何をしたいのかが想像できません。 一つのフィールドに複数の意味を持つデータをもたせているのですか? でしたらそれはデータベースでは一番やってはいけないことになります。 データ設計からやり直したほうがいいと思います。 その上でテーブルの関連性を考慮したテーブル設計をしましょう。 エクセルと同じ使い方をしているのでしたらAccessを使う意味がありません。 一つのフィールドには一つの意味のデータを。 一つのテーブルには関連性の高いフィー目処をまとめる。得意先なら得意先名と連絡先などを一意となるコードを付け足して1レコードを1得意先とする。 請求書や見積書なら、請求書番号をキーとして得意先コード(敬称などは得意先テーブルから引っ張る)や明細となる物品や何かをまとめたコードと数量、単価をもたせる。 明細となる物品等は更に物品テーブルとか商品テーブルを作成しコードで紐付ける。 基本的な考え方は、使い回しができるデータはそれだけでテーブルを一つ作るということです。 コードはできれば数値型がいいですね。 数値型とテキスト型は抽出条件として比較させることはできません。型変換が必要になりますが自由に入力したデータでは同じつもりで入れたはずなのに一致しないと判断されてしまいます。だからそういう齟齬が発生しないデータ型でデータ設計、テーブル設計をするのです。 どんな業務を想定しているのかわかりませんが、本来ならデータ分析からテーブル設計だけで数週間は時間をかけて設計します。 そうしないと苦労するだけで全然使ってもらえないものになってしまいます。 とりあえず、SQL言語に関する書籍を読んでみましょう。そのうえでネットでSQLについて調べてみてください。いきなりネットで調べても前提知識がなければ何も理解できませんからね。
お礼
m3_makiさん 回答ありがとうございました。 「'」を入れるのですね。自分で「’」を入れたのですが、一がおかしかったみたいです。 あと、紐づけるテーブルって同じのを複数入れれるとは知らなかったです。 勉強になりました。ありがとうございました。