2011-02-15 16 views
0

5つのデータベースを1つにマージしようとしています。 5つのデータベースは、テーブルごとに同じテーブル、同じ構造、同じフィールドを持ち、テーブルとフィールドの同じ名前も持っています。各データベースのデータは、5人の異なるメンバーが撮影したものとは異なります。だから、私はすべてのレコードを1つに統合しようとしています。だから、私は基本的に各テーブルのクエリを書いて、次にクエリを実行するためにVBAコードを実行しようとしています。クエリは、土壌測定は現在のデータベース内のテーブルの一つであり、私は、共通のデータベースに同じテーブルにそれを上にコピーしていますMS Accessでランタイムエラー3825

INSERT INTO SoilMeasurementTable IN 'C:\Users\vtalreja\Desktop\Common.accdb' 
SELECT * FROM SoilMeasurementTable; 

です。

すべてのクエリを1つずつ実行するためのVBAコードがあります。このVBAコードをモジュールとして保存し、すべてのデータベースのマクロとして実行して、レコードが1つのデータベースにマージされるようにしました。私はそれが何を意味するのかわからない

"Select * cannot be used in an INSERT INTO query when the source or destination table contains a multivalued field."

:それは、このエラーを飛び出しテーブルの特定のクエリを実行するために来るときだから私の問題があります。私はたくさんの検索を試みましたが、成功しませんでした。誰もが私を助けてくださいと私にエラーがどのようになる可能性があり、それを動作させるために変更することができることを教えてくださいできますか?

答えて

1

複数値フィールドは、Access 2007で導入された新しい機能であり、新しいACCDB形式でのみサポートされ、古いMDB形式ではサポートされません。

新しいアクセスユーザーは、利便性が高いと思われるため、多値フィールドを優先します。また、インタラクティブに使用することもできます。しかし、コードを使用してデータを操作しようとすると、複数の値を持つフィールドには問題があります。あなたは1つを見つけた。エラーメッセージがクリアされています...複数値のフィールドを持つINSERTステートメントにSELECT *を使用することはできません。

多値フィールドを避けるため、状況に応じた簡単な回避策があるかどうかはわかりません。それが私だったら、多値フィールドを別のテーブルに置き換えて、各レコードの複数の値を保持するように再設計することをお勧めします。各レコードは値ごとに1つで、親レコードの主キーに関連付けられます。

あまりにも多くの作業がある場合は、他の人が現在のデータベース構造と連携するより簡単なソリューションを提供しているかどうかを確認してください。

+2

+1私は複数値フィールドは避けるべきであることに同意します。それらはSharepointで使用するためのものです。あなたは読むことができます:http://stackoverflow.com/questions/4591813/access-2010-sql-how-do-you-copy-a-row-which-has-an-attachment-field/4593801#4593801 – Fionnuala

+1

多値フィールドは悪いです。それらは必要な悪(すなわち、Sharepointの可読性)であるかもしれませんが、それはそれらを悪くしません。 – RolandTumble

+1

明示的なSELECT句を持つソリューションはありますか? –

0

@ David-W-Fentonは、他の回答のコメントに記載されているように、フィールドを明示的に一覧表示するようにSELECTステートメントを変更すると問題が解決するはずです。それは私のためにやった。換言すれば、変更:

INSERT INTO SoilMeasurementTable IN 'C:\Users\vtalreja\Desktop\Common.accdb' 
SELECT * FROM SoilMeasurementTable 

へ:

INSERT INTO SoilMeasurementTable (field1, field2, field3) IN 'C:\Users\vtalreja\Desktop\Common.accdb' 
SELECT field1, field2, field3 FROM SoilMeasurementTable