Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.09;
Скачать: CL | DM;

Вниз

Как скопировать таблицу из одной базs Access в другую ?   Найти похожие ветки 

 
Boris_S ©   (2003-12-11 10:46) [0]

Используются ADO - компоненты. Необходимо таблицу из одной базы Access ( mdb - файл) скопировать в другую базу (файл). При этом скопировать необходимо как структуру таблицы так и данные. Как это проще всего сделать? Спасибо за ответы!


 
Digitman ©   (2003-12-11 10:58) [1]

не проще ли, если на машине установлен MSAccess, обрптиться к нему командой

DoCmd.CopyObject

и пусть он сам сделает копию любого объекта базы ?


 
Boris_S ©   (2003-12-11 11:16) [2]

Для работы программы на машине не обязательно должен быть установлен MSAccess. Кроме того, копирование таблицы из файла в файл будет довольно частой операцией, поэтому должно выполняться как можно поще и быстрее, желательно с помощью SQL, если это возможно.


 
Малиновский Владимир   (2003-12-11 11:22) [3]

Ну и плюнь на Access! Используй то, чем умеешь пользоваться!


 
Stas ©   (2003-12-11 11:22) [4]

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


 
Stas ©   (2003-12-11 11:30) [5]

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


 
Digitman ©   (2003-12-11 11:33) [6]

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

воспользуйся им тогда

см. метод Database.CreateTableDef, позволяющий быстро скопировать структуру указанной таблицы указанной БД

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


 
Boris_S ©   (2003-12-11 12:30) [7]

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


 
Digitman ©   (2003-12-11 12:37) [8]


> Boris_S


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

а откуда она, таблица newtable взялась в базе newbase.mdb ?
ты ее создал ?


 
Boris_S ©   (2003-12-11 12:41) [9]

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


 
Boris_S ©   (2003-12-11 12:45) [10]

>вот ты пишешь into [newbase.mdb].[newtable]

>а откуда она, таблица newtable взялась в базе newbase.mdb ?
>ты ее создал ?

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


 
Digitman ©   (2003-12-11 12:53) [11]

DAO.DBEngine - объект-сервер автоматизации, на котором базируется MSAccess

все что делает Access - делает он это при неявном использовании этого объекта

ты можешь создать экз-р этого объекта явно

var DBEngine: OleVariant;

DBEngine := CreateOleObject("DAO.DBEngine.XX");

где XX - версия DAO (посмотри у себя в реестре в HKLM\CLSID) ... это м.б. 35, 36 или 40

получив ссылку на объект, ты обращаешься к нему точно так же как если бы ты делал это в редакторе MSAccess VBA


 
sniknik ©   (2003-12-11 14:57) [12]

Boris_S © (11.12.03 12:30) [7]
> Попробовал
> SELECT * into [newbase.mdb].[newtable] from mytable
в ADOCommand, пишет
> Parameter object is improperly defined.Inconsistent or incomplete information was provided.

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


 
Boris_S ©   (2003-12-11 15:43) [13]

Может я че-то не то делаю...
Есть 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"
Путь к файлу и название таблицы - правильные, если неправильные, то пишет что не находит файл.


 
Boris_S ©   (2003-12-11 16:04) [14]

ГОСПОДА! ПОМОГИТЕ, ПОГИБАЮ!


 
Stas ©   (2003-12-11 16:10) [15]

Ты этот запрос напиши в самом Access и выполни его там.


 
Digitman ©   (2003-12-11 16:23) [16]


> Boris_S


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

что ж ... продолжай, парься )


 
Boris_S ©   (2003-12-11 16:26) [17]

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



Страницы: 1 вся ветка

Текущий архив: 2004.01.09;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.02 c
3-25251
x_x_x
2003-12-10 12:42
2004.01.09
TAdoCommand и параметры


14-25589
Maxim Vetera
2003-12-17 19:25
2004.01.09
Хорош трепаться.


1-25386
Rate
2003-12-24 20:09
2004.01.09
Нажатие кнопки


4-25642
Vladimir_Shk
2003-11-06 16:48
2004.01.09
Преобразовать дату


14-25610
Kerk
2003-12-11 13:59
2004.01.09
checked