Главная страница
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.029 c
3-1090330538
MORA
2004-07-20 17:35
2004.08.15
NULL


1-1090987927
R
2004-07-28 08:12
2004.08.15
Маска папки


14-1090860633
Art_Z
2004-07-26 20:50
2004.08.15
Два аргумента за Unix


4-1088495082
pavel_guzhanov
2004-06-29 11:44
2004.08.15
Нажатие кнопки в другой программе


3-1090414607
starik30
2004-07-21 16:56
2004.08.15
TpFIBStoredProc vs TpFIBDataSet