Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Вниз

Процедура обновления БД   Найти похожие ветки 

 
syte_ser78 ©   (2005-07-12 17:38) [0]

Есть две таблици Paradox
Одна основная (table1) с которой работает приложение и таблица изменений (tbl_update)
Приведенный ниже код обрабатывает 15000 изменений примерно за 10 минут. Долго, хотелось бы поскорее. Насколько плох с точки зрения скорости приведенный ниже код и как лучше?
"Индексное" поле - "ID"

procedure TForm4.Button1Click(Sender: TObject);
var
  i:integer;
begin
  ProgressBar1.Position:=0;
  ProgressBar1.Max:=tbl_update.RecordCount;
  frm_main.Table1.Open;
  frm_main.Table1.First;
  frm_main.Table1.Filtered:=false;
  frm_update.Form4.tbl_update.open;
  frm_update.Form4.tbl_update.first;
     while not tbl_update.Eof do
        begin
           if frm_main.Table1.Locate("ID", tbl_updateID.AsVariant, []) then
              begin
              frm_main.Table1.Edit;
              for i:=0 to  frm_main.Table1.FieldCount-1 do
                 frm_main.Table1.Fields[i].AsString:= tbl_update.Fields[i].AsString;
              end
           else
              begin
              frm_main.Table1.Append;
              for i:=0 to  frm_main.Table1.FieldCount-1 do
                 frm_main.Table1.Fields[i].AsString:= tbl_update.Fields[i].AsString;
              end;
           ProgressBar1.Position:=ProgressBar1.position+1;
           frm_update.Form4.Label4.Caption:=frm_main.Table1NAME.AsString;
           frm_main.Table1.Post;
           tbl_update.Next;
        end;
  frm_main.Table1.Close;
  frm_main.Table1.Open;
  frm_main.load_cmb;
end;


 
ANB ©   (2005-07-12 17:46) [1]

На вид, код верный. Только имена по умолчанию поменять на нормальные надо бы.
Такое, впечатление, что индекс ты таки не используешь. Это долго, или у тебя комп сильно тормознутый. Попробуй использовать LocalSQL.


 
syte_ser78 ©   (2005-07-12 17:48) [2]

ANB ©   (12.07.05 17:46) [1]
Индекс не использую. Для этого ИНДЕКСНОЕ в кавычки и взял. Что ты имееш ввиду под "нормальными именами"? Вместо Table1.Fields[i] - Table1NAME и т.д.?


 
ANB ©   (2005-07-12 18:00) [3]


> Индекс не использую
- так используй !

Table1 => tblMain или еще как нибудь осмысленно. Если у тебя будет под сотню дейтасетов, как ты в них разбираться то будешь ?


 
evvcom ©   (2005-07-13 08:51) [4]

Использовать LocalSQL - будет быстрее гораздо. Имхо.


 
syte_ser78 ©   (2005-07-13 09:40) [5]

ANB ©   (12.07.05 18:00) [3]
Подскажи, как будет выглядеь вышенаписанный код при использовании индексов


 
ANB ©   (2005-07-13 09:54) [6]

Я давненько с парадоксом не работал, но примерно (и все имхо) :
1. Индекс надо создать (например в DataBase Desktop) и желательно в обоих таблицах. И, судя по коду, индекс должен быть уникальным.
2. В компонентах TTable индекс надо подключить.
3. Код не поменяется.
Если я чего не так написал - ща придут мастера, поправят и уточнят.



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

Форум: "Базы";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.035 c
4-1119951512
Gear
2005-06-28 13:38
2005.08.21
Окна


14-1122795759
Kerk
2005-07-31 11:42
2005.08.21
С днем рожденья! 31 июля


4-1119619778
NikNet
2005-06-24 17:29
2005.08.21
Как найти конец сектора, что бы завершить поиск в ROOTDIR?


14-1122704592
Kerk
2005-07-30 10:23
2005.08.21
Ненавижу MLM. Ненавижу GoldenStream.


3-1120630001
Shopot
2005-07-06 10:06
2005.08.21
BDE. Бывают проблемы с сохранением данных в базе.





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