Як скопіювати таблицю з однією баз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 об'єкти. Все одно величезне спасибі