Форум: "Базы";
Текущий архив: 2004.01.09;
Скачать: [xml.tar.bz2];
ВнизКак скопировать таблицу из одной баз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.012 c