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

Вниз

Перекачка данных с индикатором прогресса   Найти похожие ветки 

 
Fresh   (2004-07-23 15:22) [0]

Здравствуйте, мастера.

Помогите, пожалуйста, разобраться. Надо создать программульку для перекачки большой БД с локального .mdb файла в Oracle. Но ввиду того, что БД большого объема, необходимо использовать индикатор прогресса на форме.

При этом. В таблице нет ключа и уникального поля. Предварительное формирование доп. столбца с номерами очень трудоемко... Надо как-то выбирать данные пот несколько записей и кидать в Oracle, изменяя нидикатор прогресса..

Попробовал использовать асинхроннуй работу ADODataSet с использованием провайдера jet - асинхронной работы толком не получилось.

Подскажите, пожалуйста, хотя бы общие положения, которых мне надо придерживаться: рыть SQL или лезть в OLE и т.п. Или, может быть есть какой-то вообще более простой способ?


 
bushmen ©   (2004-07-23 17:27) [1]

> есть какой-то вообще более простой способ

Подцепляешься к mdb через ADO. Делаешь вначала запрос на количество записей в этой базе. Это у тебя 100%. Потом, делаешь полную выборку из базы. Открываешь другое соединение с Oracle и в цикле переливаешь. Но раз база большая, то будет тормозить. Но ты же просил ПРОСТОЙ путь :)))


 
Koala   (2004-07-23 18:46) [2]

делал для BDE но попробуй переделать под себя...
Это будет работать если в таблице записей < 32767

tbl.DisableControls;
ProgressBar.Max := 100;
Percent.Caption := "0%";
try
 while not tbl.Eof do
   begin
     здесь прописываешь перекачку данных
     tbl2.FieldByName("...").AsString := tblPole.AsString;    
     Application.ProcessMessages;
     ProgressBar.Position := tbl.RecNo;
     Percent.Caption := IntToStr(Round(ProgressBar.Position /
                                       ProgressBar.Max * 100)) + " %";
     if WorkBreak then goto 10;
     tbl.Next;
   end;
10:
 tbl.EnableControls;
 ProgressBar.Position := 0;
 Percent.Caption := "0%";


 
Koala   (2004-07-23 18:52) [3]

PS

var WorkBreak : Boolean;

*{в начале процедуры }*
WorkBreak = false;
если нужно остановить процедуру перекачки
на кнопку вешаешь WorkBreak := true;



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

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

Наверх




Память: 0.47 MB
Время: 0.023 c
14-1091093968
stone
2004-07-29 13:39
2004.08.15
Перлыы коментаторов :))


1-1091180742
McSimm
2004-07-30 13:45
2004.08.15
Проблема использования интерфейса при переводе декларации с C


14-1090895861
Думкин
2004-07-27 06:37
2004.08.15
С днем рождения! 27 июля


4-1089132842
Луарвик
2004-07-06 20:54
2004.08.15
Модуль ShlObj (Win32 API Shell objects Interface Unit)


4-1088780499
vajo
2004-07-02 19:01
2004.08.15
процент копирования файла