Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-1081755029
Morgan
2004-04-12 11:30
2004.05.02
Распознавание ч/б рисунков


1-1082264464
garry79
2004-04-18 09:01
2004.05.02
Как правильно сделать форму-заставку в отдельном потоке?


3-1081096181
Walker Hippi
2004-04-04 20:29
2004.05.02
InterBase в сети


1-1081848714
SergP
2004-04-13 13:31
2004.05.02
"Засунуть" ProgressBar в StatusBar


4-1078402242
kentavr
2004-03-04 15:10
2004.05.02
TRAY





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