![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
загрузка приложения [D6, dBase, FoxPro]
reticon © (2003-03-14 00:21:00)Уважаемые мастера!!!
Имеется следующий код:
procedure TForm1.FormCreate(Sender: TObject);
var
n1,n2,n3: integer;
s1,s2,s3: string;
begin
n1:=Random(Form1.ADOTable1.RecordCount);
Form1.ADOTable1.MoveBy(n1);
s1:=Form1.ADOTable1.FieldByName("field1").AsString + #32 +
Form1.ADOTable1.FieldByName("field2").AsString + #32 +
Form1.ADOTable1.FieldByName("field3").AsString;
n2:=Random(Form1.ADOTable1.RecordCount);
Form1.ADOTable1.MoveBy(n2);
s2:=Form1.ADOTable1.FieldByName("field1").AsString + #32 +
Form1.ADOTable1.FieldByName("field2").AsString + #32 +
Form1.ADOTable1.FieldByName("field3").AsString;
n3:=Random(Form1.ADOTable1.RecordCount);
Form1.ADOTable1.MoveBy(n3);
s3:=Form1.ADOTable1.FieldByName("field1").AsString + #32 +
Form1.ADOTable1.FieldByName("field2").AsString + #32 +
Form1.ADOTable1.FieldByName("field3").AsString;
end;
так вот, загрузка приложения (с момента клика по ярлыку до появления формы на экране) длится около 2-х минут!!!
Подскажите пожалуйста, что в этом коде является причиной этого и как этого избежать.
P.S. файл БД - dBASE, содержит 70000 записей
NickBat (2003-03-14 11:51:00) [1]Проше сначала определить три переменные n1, n2, n3. А потом сделать запрос вида:
select field1, field2, field3 from mytable where id in (n1,n2,n3)
Anatoly Podgoretsky (2003-03-14 09:26:00) [2]Так оно наверно перечитывает все записи последовательно в зависимости от MOVEBY
рещение сделать поле, пронумеровать, на него индекс и пермещаться по индексу, будет чрезвычайно быстро
И еще есть смысл отказаться от АДО в пользу БДЕ, все равно используется БДЕ (C:\WINDOWS\SYSTEM\MSX BDE40.DLL) через промежуточное звено в виде АДО