Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.08.31;
Скачать: [xml.tar.bz2];

Вниз

Как передать данные из одной БД 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
4-1195407043
IGOR
2007-11-18 20:30
2008.08.31
Число страниц и копий, посылаемых на печать


6-1192552967
Matrex
2007-10-16 20:42
2008.08.31
Проверка существования URL


2-1216898995
i
2008-07-24 15:29
2008.08.31
загрузка сохранения множества


6-1192114180
ggg
2007-10-11 18:49
2008.08.31
net share


4-1195858527
periskops
2007-11-24 01:55
2008.08.31
пульт





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский