![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перекачка данных с индикатором прогресса
Fresh © (2004-07-23 15:22:00)Здравствуйте, мастера.
Помогите, пожалуйста, разобраться. Надо создать программульку для перекачки большой БД с локального .mdb файла в Oracle. Но ввиду того, что БД большого объема, необходимо использовать индикатор прогресса на форме.
При этом. В таблице нет ключа и уникального поля. Предварительное формирование доп. столбца с номерами очень трудоемко... Надо как-то выбирать данные пот несколько записей и кидать в Oracle, изменяя нидикатор прогресса..
Попробовал использовать асинхроннуй работу ADODataSet с использованием провайдера jet - асинхронной работы толком не получилось.
Подскажите, пожалуйста, хотя бы общие положения, которых мне надо придерживаться: рыть SQL или лезть в OLE и т.п. Или, может быть есть какой-то вообще более простой способ?
Koala (2004-07-23 18:52:00) [1]PS
var WorkBreak : Boolean;
*{в начале процедуры }*
WorkBreak = false;
если нужно остановить процедуру перекачки
на кнопку вешаешь WorkBreak := true;
Koala (2004-07-23 18:46:00) [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%';
bushmen (2004-07-23 17:27:00) [3]> есть какой-то вообще более простой способ
Подцепляешься к mdb через ADO. Делаешь вначала запрос на количество записей в этой базе. Это у тебя 100%. Потом, делаешь полную выборку из базы. Открываешь другое соединение с Oracle и в цикле переливаешь. Но раз база большая, то будет тормозить. Но ты же просил ПРОСТОЙ путь :)))