Форум: "Базы";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
ВнизОбновление БД Найти похожие ветки
← →
Nous Mellon © (2004-04-03 18:06) [0]Сей вопрос я давненько уже вскользь задавал АП, вот теперь встала задача его практической реализации я решил более подробно узнать Ваши мнения. Итак есть БД Аксесс(mdb) и есть скажем ее копия расположеная где-то
на просторах web и доступная для скачивания. Та что в Инете содержит практически те же таблицы но с бОльшим кол-вом данных. Собственно нужно обновить Конеретные таблицы просто заменив их таблицами из свежей БД.
Лично я вижу этот процесс в два этапа
1. получение из интернета файла новой БД и сохранение его в Темп диретории.
2. Замена ОДНОЙ из таблиц.
Разыскивая информацию по перовму пункту нашел в Кэнту упоминание о том что можно скачать файл средствами WinInetAPI, но может это можно сделать более удобными способами?
Анатолий говорил о CopyFile, но как его здеь правильно применить..
А по второму пункту ничего я не нашел поэтому и обращаюсь к вам...
← →
Anatoly Podgoretsky © (2004-04-03 20:32) [1]Предпочитаю менять не таблицы, а записи, введя в таблицу дополнительное поле - тип изменения A-D-U
← →
Nous Mellon © (2004-04-03 21:01) [2]
> Предпочитаю менять не таблицы, а записи, введя в таблицу
> дополнительное поле - тип изменения A-D-U
Хм.. В смысле менять их поочередно например в цикле? А как же быть
с первым пунктом?
Да и почему у вас такое предпочтения? Из-за невозможности поменять сразу всю таблицу физически?
← →
Anatoly Podgoretsky © (2004-04-03 21:33) [3]Получение любым путем, хоть с помощью Интернет Эксплорера или по почте, хоть программным путем, с помощью любого протокола, хоть вручную.
Последовательность такая.
1. проверка на обновление
2. закачка данных, любым путем
3. обновление данных
4. выход или продолжение работы.
← →
DevMaster © (2004-04-03 22:06) [4]>Nous Mellon © (03.04.04 18:06)
>1. получение из интернета файла новой БД и сохранение его в >Темп диретории.
Зачем? если ты получил всю базу так замени всю.
← →
Nous Mellon © (2004-04-03 22:08) [5]желательно реализовать получение программно чтобы пользователь его как такого не видел... Какой компонент порекомендуете?
> 3. обновление данных
Вы говорите что предпочитаете обновлять записи.. но мне желательно именно просто заменить таблицу. То есть я думаю так: удаляем старую таблицу и копируем новую.. но вот как осуществить это програмно..Или это impossible?
← →
YurikGl © (2004-04-03 22:14) [6]Как заменить програмно что? Таблицу? Ну дык create table
← →
Anatoly Podgoretsky © (2004-04-03 22:21) [7]Зачем гнать по сети те данные, которые уже есть, нужно гнать только дельту.
Для реализации подходит TTable, TQuery, TADO...
← →
DevMaster © (2004-04-03 22:25) [8]>Вы говорите что предпочитаете обновлять записи.. но мне >желательно именно просто заменить таблицу. То есть я думаю >так: удаляем старую таблицу и копируем новую.. но вот как >осуществить это програмно..Или это impossible?
YouBase.Close; - или что то в этом роде!
CopyFile(YouBase,TempDir,False);
CopyFile(YouInetBase,YouBase,True);
Вставь progressbar и по Timer запускай его!
← →
Nous Mellon © (2004-04-03 23:02) [9]
> Зачем? если ты получил всю базу так замени всю.
не там немного сложнее... есть архивные таблицы и текущие таблицы.
Текущих две. Изменения находятся только в них. На вэб-сервере БД только с двумя этими текущими таблицами. Мне в принципе не страшно гонять всею таблицу а не дельту потому что масимальное кол-во записейц в таблице 255.
> Зачем гнать по сети те данные, которые уже есть, нужно гнать
> только дельту.
> Для реализации подходит TTable, TQuery, TADO...
по каким методам этих классов, порекомендуете почитать справку чтобы перегонять только обновление? То есть если я вас правильно понял то у у этих классов есть реализованные методы позволяющие обновить Рекордсет...
Причем судя по вашему посту они поддерживают и обновление через Инет..
← →
DevMaster © (2004-04-03 23:10) [10]Ну раз так то легче(реализовать)будет просто замену таблиц нужных!
В Темп скинул базу с инета открыл и пока не конец гони в новую(перед началом отчищеную) - это не задумываясь, а если хочеш только новые то создай поле в базе DateTime и по нему ориентируйся! Для реализации лучше всего Query - всетики SQL!
← →
Nous Mellon © (2004-04-04 09:48) [11]2DevMaster
То есть я так понимаю вы предлгаете сделать следующее
1. скачать БД с инета - опять таки может быть подскажете каким способом это лучше сделать
2. Сделать запрос к таблице в этой БД скажем на определенную дату.
3. добавить все записи запроса к старой таблице и снести БД
Верно?
PS Хотя мне все равно придется перегонять полнотстбю таблицы из-за некоторой специфики самой программы..
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c