Ошибка выполнения 3825 в MS Access - PullRequest
0 голосов
/ 15 февраля 2011

Я пытаюсь объединить 5 баз данных в одну.5 баз данных имеют одинаковые таблицы, одинаковую структуру и одинаковые поля для каждой таблицы, а также одинаковые имена для таблиц и полей.Просто данные в каждой базе данных разные, так как они были взяты 5 различными членами.Итак, я пытаюсь объединить все записи в одну.Итак, я в основном пытаюсь написать запрос для каждой таблицы, а затем запустить код VBA для выполнения запросов один за другим.Это запрос

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

, где измерение почвы является одной из таблиц в существующей базе данных, и я копирую ее в ту же таблицу в общей базе данных.

У меня есть код VBA для запускавсе запросы один за другим.Я сохранил этот код VBA как модуль и запустил его как макрос в каждой базе данных, чтобы записи были объединены в одну базу данных.Поэтому моя проблема заключается в том, что при выполнении определенного запроса для таблицы появляется эта ошибка:

«Выбрать * нельзя использовать в запросе INSERT INTO, когда таблица источника или назначения содержит многозначное значениеполе. "

Я не уверен, что это значит.Я пытался много искать, но безуспешно.Может кто-нибудь, пожалуйста, помогите мне и дайте мне знать, какая ошибка может быть и что можно изменить, чтобы она заработала?

Ответы [ 2 ]

1 голос
/ 15 февраля 2011

Многозначное поле - это новая функция, появившаяся в Access 2007 и поддерживаемая только в новом формате ACCDB, а не в более старом формате MDB.

Новые пользователи Access часто предпочитают многозначные поля, потому что оникажется удобным.И они могут быть таковыми для интерактивного использования.Но когда вы пытаетесь использовать код для манипулирования данными, многозначные поля создают проблемы.Вы нашли один;сообщение об ошибке ясно ... вы не можете использовать SELECT * для оператора INSERT с многозначными полями.

Я не знаю, есть ли простой обходной путь для вашей ситуации, потому что я избегаюполя.Если бы это был я, я бы предпочел изменить дизайн, чтобы заменить многозначное поле отдельной таблицей для хранения нескольких значений для каждой записи ... одна запись на значение, каждая из которых связана с первичным ключом родительской записи.

Если это слишком много работы, подождите, чтобы узнать, предложит ли кто-нибудь еще более простое решение, которое будет работать с вашими текущими структурами базы данных.

0 голосов
/ 07 мая 2016

Как отметил @ 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
...