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

Вниз

Как передать данные из одной БД Access в другую? (патч)   Найти похожие ветки 

 
Newser   (2008-07-23 22:05) [0]

Есть 2 БД - Access: одна  - специально для программы Delphi (ADO) + Access (соответственно названия полей только латинскими буквами), и вторая, старая - просто работали в Access (много пустых записей, названия полей - по русски)...

Как правильно организовать передачу данных из одной БД в другую? Создать цикл Select (из 1-й бд) - Insert (в новую бд) ? Или есть другой вариант?

Кто решал подобную задачу - буду признателен за пример!


 
fog   (2008-07-24 04:42) [1]

1 TForm + 2 TADOConnection + 2 TADODataset(можно Run-Time). Кол-во Button"s - по необходимости.
Для проверки - сделать временную базу.

ADODataSet1.First;
while not ADODataSet1.EOF do
begin

//здесь код переноса из БД1 -> БД2
ADODataSet2.Post;
ADODataSet1.Next;
end;


 
Newser   (2008-07-24 17:31) [2]

Спасибо, fog!

А тут возможно обойтись без Select? - Next-ом?
//здесь код переноса из БД1 -> БД2


 
fog   (2008-07-24 20:54) [3]

Select уже случился до ADODataSet1.First;


 
MsGuns ©   (2008-07-24 20:56) [4]

access поддерживает гетерогенные запросы


 
Nat   (2008-07-25 02:40) [5]

Передача данных из одной таблицы в другую - задача простая: Либо
1) В цикле проходим по записям Одного ДатаСета и Добавляем в другой командой, что нравится
(Append-AppendRecord-Insert-InsertRecord)
Метод мне не нравится - лень
2) Пишем строку запроса который скопирует все нужные данные из одной БД в другую и выполняем запрос. Иногда удается сделать один запрос, копирующий данные в несколько связанных таблиц.
Мой выбор
Смотрите справку SQL по командам SELECT; INSERT; INTO; SELECT INTO; INSERT INTO

Более сложная проблема возникнет, если есть таблицы (Мастер-Детейл-Субдетейл) связанные по ключевым полям-автоинкрементам. Акцесс (97) не позволяет самостоятельно устанавливать их значения. Если Акцесс (>=2000) позволяет записать свое значение в автоинкремент, то следующий блок не нужен.

Для решения этой задачи предварительно создаю в таблице-получателе данных дополнительное поле CopyID.
В это поле копирую значение автоинкрементного ключевого поля ID. Естесственно соотв-е поле получателя не инициализирую, счетчик сам сработает.
В таблице Детейл тоже создаю поле MasterCopyID - на всякий случай
После копирования таблиц Мастер-Детайл выполняю запрос на обновление: по связи CopyID->MasterCopyID обновляю поле связи таблицы Detail с Мастером Detail.MasterID=Master.ID



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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
2-1216799306
Квэнди
2008-07-23 11:48
2008.08.31
Сообщений Windows на открытие URL


15-1215775699
Andy BitOff
2008-07-11 15:28
2008.08.31
Прогресс бар при сохранении документа в Ворде


2-1216793238
TUserClass
2008-07-23 10:07
2008.08.31
Кнопочка на табе (заголовке) у TabSheet.


2-1216902939
Alex_C
2008-07-24 16:35
2008.08.31
Как правильно дождаться сбытия?


15-1215684599
AlexanderMS
2008-07-10 14:09
2008.08.31
Программа для уменьшения количества цветов на изображении.