Як скопіювати таблицю з однією базs access в іншу

Як скопіювати таблицю з однією базs Access в іншу?

Використовуються ADO - компоненти. Необхідно таблицю з однієї бази Access (mdb - файл) скопіювати в іншу базу (файл). При цьому скопіювати необхідно як структуру таблиці так і дані. Як це найпростіше зробити? Дякую за відповіді!

чи не простіше, якщо на машині встановлено MSAccess, обрптіться до нього командою

і нехай він сам зробить копію будь-якого об'єкта бази.

Ну і плюнь на Access! Використовуй те, чим вмієш користуватися!

Спробуй так, але я можу ошбаться:
insert into [newbase.mdb]. [newtable] select * from MyTable

Правилно напевно так:
SELECT * into [newbase.mdb]. [Newtable] from mytable

ну вже DAO.DBEngine - то гарантовано встановлений на машині з ADO.

скористайся ним тоді

см. метод Database.CreateTableDef, що дозволяє швидко скопіювати структуру зазначеної таблиці зазначеної БД

а вже заповнення таблиці - справа одного-двох запитів. можна і ADO для цього скористатися, а можна і тим же DAO.DBEngine - різниці немає

спробував
SELECT * into [newbase.mdb]. [Newtable] from mytable
в ADOCommand, пише
Parameter object is improperly defined.Inconsistent or incomplete information was provided.

ось ти пишеш into [newbase.mdb]. [newtable]

а звідки вона, таблиця newtable взялася в базі newbase.mdb.
ти її створив.

що таке DAO.DBEngine і як заповнити таблицю за допомогою SQL-запитів. Проблема в тому що один компонент ADO може бути підключений тільки до однієї бази. А переписувати дані по рядках занадто довго за часом.

> Ось ти пишеш into [newbase.mdb]. [Newtable]

> А звідки вона, таблиця newtable взялася в базі newbase.mdb.
> Ти її створив.

якщо не вказувати [newbase.mdb]. то створюється копія таблиці з ім'ям newtable в тій базі, до якої є коннект в ADO. Проблема не в тому, що таблиці немає, а в тому що запит "не бачить" базу, в яку треба скопіювати таблицю.

DAO.DBEngine - об'єкт-сервер автоматизації, на якому базується MSAccess

все що робить Access - робить він це при неявному використанні цього об'єкта

ти можеш створити прим-р цього об'єкта явно

var DBEngine: OleVariant;

де XX - версія DAO (подивися у себе в реєстрі в HKLM \ CLSID). це м.б. 35, 36 або 40

ця помилка на цей запит ну ніяк не могла видатися. або в тебе там лишнии "залишки" інших запитів. параметр. або запит "трохи" скорочений, так нічого суттєвого (як ти думав напевно) шлях до бази, але саме в ньому помилка.

Може я че-то не те роблю.
Є ADOConnection1. в якому ConnectionString ". Data Source = D: \ dir1 \ Smet1.mdb.".
Є ADOCommand1, в якому Connection = ADOConnection1, а CommandText = "select * into [newtable1] from [d: \ dir1 \ smet2.mdb]. [GBLStruct]"
По правій кнопці в режимі проектування натискаю Execute, після чого з'являється "Parameter object is improperly defined.Inconsistent or incomplete information was provided"
Шлях до файлу і назва таблиці - правильні, якщо неправильні, то пише що не знаходить файл.

ПАНОВЕ! ДОПОМОЖІТЬ, гине!

Ти цей запит напиши в самому Access і виконай його там.

я тебе навів на хорошу, витончену і просту по реалізації ідею з DAO.DBEngine - ти проігнорував, упершись в свій ADO як в панацею від усіх "бід"

що ж. продовжуй, парся)

я не вперся, просто специфіка програми не допускає роботи через OLE і COM об'єкти. Все одно величезне спасибі

Схожі статті