• ベストアンサー

アクセスUNIONクエリでの文字切れについて

アクセス2010を使用しています。 UNIONクエリで結合した時に、文字数が255文字で切れてしまう回避方法をお教え願います。 リンクテーブルとして、エクセルファイル5個とリンクしています。 この5個のリンクテーブルをUNIONクエリで一つのデータにしました。 リンク元となるエクセルファイルの中に「内容」セルがあり、このセルの中には100文字から500文字まで入力してあります。 UNIONクエリで結合すると文字が255文字で切れてしまうため、これの回避方法をお教え願います。 リンクしてあるエクセルファイルはこの例で5個ですが、実際は20個ほどあり、一つのエクセルファイルに500件ほど入力されています。 「内容」の項目をメモ型で結合できれば回避できそうですが、UNIONクエリでデータ型を指定できるのでしょうか。 インターネットで調べましたが分かりませんでしたので、どうぞよろしくお願いします。 【このような感じで結合しています】 SELECT 氏名,年齢,内容 from T_01 UNION SELECT * from T_02 UNION SELECT * from T_03 UNION SELECT * from T_04 UNION SELECT * from T_05;

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.14

すみません訂正です。 回答No.2で回答したリンクテーブルをもとにした更新クエリを利用 も255文字以上が最初のほうに無いと駄目でした。

ankle
質問者

お礼

今後ともよろしくお願いいたします

Powered by GRATICA
ankle
質問者

補足

kkkkkmさん、おはようございます。 いろいろとお教えいただきまして、ありがとうございます。 今回、このようにエクセルファイルをアクセスにリンクテーブルとして設定し、一つのデータにしたかった理由は次の通りです。 実際のエクセルファイルは、各月ごと一つのファイルになっています。業務上、各月ごとに分けておく必要があります。 ただ、これまで入力してきた過去のデータを検索するとき、エクセルファイルが各月ごとに分かれているため、一度で検索できません。 これを一度で検索するためにUnionクエリを使用して、各月ごとに分かれているエクセルデータを一つにまとめようとしたものです。 一つのデータにした結果、検索がとても楽になり業務が格段にはかどるようになりました。 今回は大変勉強になりました。 困ったときは、またお助けくださいますようお願いいたします。

その他の回答 (15)

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.5

回答No.3のSQLで UNION ALL SELECT * from T_01 が抜けてました SELECT 氏名,年齢,内容 from T_00 UNION ALL SELECT * from T_01 UNION ALL SELECT * from T_02 UNION ALL SELECT * from T_03 UNION ALL SELECT * from T_04 UNION ALL SELECT * from T_05;

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.4

重複を更新クエリで削除するのではなく選択クエリで非表示にしたい場合は UNIONクエリをもとにした選択クエリで集計を選んで全てのフィールドをグループ化しておくといけると思います。

ankle
質問者

補足

kkkkkmさん、ご回答ありがとうございます。 重複の除外は、お教えいただいたようにして対応したいと思います。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.3

> 1行目は「All」がないからなのか、切れてしまっているようです。 こちらでは切れないのですが2010だと切れてしまいますか・・・ 一つの策としてT_00という氏名,年齢,内容のフィールド名だけがあるダミーのテーブルを作成して SELECT 氏名,年齢,内容 from T_00 UNION ALL SELECT * from T_02 UNION ALL SELECT * from T_03 UNION ALL SELECT * from T_04 UNION ALL SELECT * from T_05; としてみてはいかがでしょう。

ankle
質問者

補足

T_00のダミーテーブルを作成して、内容フィールドをメモ型にしても切れてしまいました。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

重複を削除したい場合でしたら 一時的なテーブルを作成して更新クエリを利用して更新と追加をするという方法がありますが テーブルごとに更新クエリを作成して順番に実行するという方法になると思います。 また、メモ型のフィールドは結合できないのでそれ以外で結合することになります。 クエリで2つのテーブルを同期させる https://hatenachips.blog.fc2.com/blog-entry-153.html

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

重複があっても削除せずにそのままでしたら以下でいけるかもしれません(2010がないので2010での確認ができません) SELECT 氏名,年齢,内容 from T_01 UNION ALL SELECT * from T_02 UNION ALL SELECT * from T_03 UNION ALL SELECT * from T_04 UNION ALL SELECT * from T_05;

ankle
質問者

補足

kkkkkmさん、いつもお世話になっております。 さて、2行目からの「UNION ALL SELECT~」 は切れずにいけたようですが、1行目は「All」がないからなのか、切れてしまっているようです。 「All」を最初に付けてもエラーになってしまいます。 全てが切れずにできる方法は、ありますでしょうか。