Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.013 c
14-25602
antonyan
2003-12-17 13:05
2004.01.09
Нужен русский help


14-25536
Ega23
2003-12-18 14:29
2004.01.09
Прогноз: Россия - Финляндия?


3-25258
Andriy Tysh
2003-12-13 13:18
2004.01.09
Подгруппа в группе QuickReport a


4-25673
DriveSoft
2003-11-06 21:59
2004.01.09
Dial-Up диалог


14-25508
Йорген фон Швах
2003-12-16 09:01
2004.01.09
Скоро скоро Новый год!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский