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

Вниз

Как правильно работать с базами Access ?   Найти похожие ветки 

 
Andrewtitoff ©   (2008-02-26 13:41) [0]

Здравствуйте!, подскажите пожалуйста как лучше работать с Access-овскими базами, у меня база состоит из нескольких таблиц, основная(которая нужна мне) находится на сервере, мне нужно периодически сверять ее со списком(он у меня в текстовике) и править,  я пользуюсь для доступа к базе ADO, все отлично работает, только как то медленно(у меня в базе около 7-ми тысяч записей, я читаю с текстового файла, там примерно 3700 записей и сверяю есть ли это в базе и если да то записываю туда некий параметр) так вот все это дело обрабатывается порядка 10-ти часов..., можно ли это как нибудь ускорить?, или я что то не так делаю?
Вот часть кода:

procedure TForm1.Button2Click(Sender: TObject);
var
f : textfile;
f2 : textfile;
s : string;
ch1 : boolean;
count  : integer;
begin
......
count:=0;
AssignFile(f,"regnum.txt");
AssignFile(f2,"nonregnum.txt");
Reset(f);
Rewrite(f2);
while not Eof(f) do
begin
Form1.Update;
readln(f,s);
inc(count);
Form1.Caption:="["+Format("%.4d",[count])+"] = "+s;
ADOTable4.First;
ch1:=false;
while not ADOTable4.Eof do
 begin
 if ADOTable4.Fields[0].Value=s then
  begin
  ListBox1.Items.Add(s);
  label3.Caption:="OK";
  ADOTable4.edit;
  ADOTable4.Fields[63].Value:=-1;
  ADOTable4.Post;
  ADOTable4.Last;
  ch1:=true;
  Break;
  end;
 ADOTable4.Next;
 end;
if ch1=false then
 begin
 ListBox2.Items.Add(s);
 label3.Caption:="False";
 Writeln(f2,s);
 end;
end;
closeFile(f);
closeFile(f2);
end;


 
Сергей М. ©   (2008-02-26 13:46) [1]

Индекс по полю таблицы, с которым ассоциирован объект Fields[0], имеется ?


 
Сергей М. ©   (2008-02-26 13:52) [2]

ADOTable4.Post;
ADOTable4.Last; <--  это зачем ?


 
Andrewtitoff ©   (2008-02-26 13:53) [3]

Честно говоря незнаю, а как это можно узнать?, я еще как то не очень разобрался как работать с базами...  =(((


 
Andrewtitoff ©   (2008-02-26 13:55) [4]

> ADOTable4.Last; <--  это зачем ?
Ой, эт ненадо, это у меня сначала вместо Break стояло...


 
Сергей М. ©   (2008-02-26 13:59) [5]


> Честно говоря незнаю


Значит нет.

Разработчик базы ты ?


 
Andrewtitoff ©   (2008-02-26 14:06) [6]

Нет, не я..., эта база задолго до меня тут, и человек который ее разрабатывал здесь больше не работает и контакта с ним нету... =(((


 
Сергей М. ©   (2008-02-26 14:14) [7]

Открой базу средствами MS Access.
Открой таблицу в режиме конструктора - там и найдешь инф-цию об индексах.


 
Andrewtitoff ©   (2008-02-26 14:21) [8]

Написанно:
Индексированное поле: нет

это оно?...

Там кстати в Fields[0] данные не повтаряются, там хранятся регистрационные номера лифтов, так что они повторятся немогут...


 
Сергей М. ©   (2008-02-26 14:25) [9]


> это оно?


Оно самое.


> повторятся немогут


Не суть как важно.

Важней то, что поиск записи по индексированному полю с использованием SQL-запроса (см. TADOQuery) в твоем случае будет гораздо быстрей.


 
Andrewtitoff ©   (2008-02-26 14:51) [10]

Ясно, а его можно поменять на индексированное?, ничего от этого не изменится в работоспособности?(там много связанных таблиц)


 
Сергей М. ©   (2008-02-26 15:03) [11]


> можно поменять на индексированное?


Можно.
Только не поменять, а просто создать уникальный индекс по этому полю.
Индекс никак не повлияет на работоспособность прочих объектов БД, но при этом позволит многократно ускорить позиционирование в наборах данных, формируемых запросами к этой таблице.


 
Andrewtitoff ©   (2008-02-26 15:08) [12]

А как это сделать?
В режиме конструктора Индексированное поле: нет поменять на Да?,
если так то что выбрать ("Допускаются совпадения"или"Совпадения не допускаются")?


 
Andrewtitoff ©   (2008-02-26 15:12) [13]

млин, "Для связанных таблиц невозможно изменение данного свойства"..., а как создать индекс по полю?


 
Сергей М. ©   (2008-02-26 15:19) [14]


> поменять на Да?,


Да.


> что выбрать


Очевидно же - "Совпадения не допускаются"


> Для связанных таблиц невозможно изменение данного свойства


"Развяжи" соотв.таблицы, создай соотв.индексы, затем снова "свяжи".



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

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

Наверх




Память: 0.5 MB
Время: 0.028 c
2-1204035970
s_t_d
2008-02-26 17:26
2008.03.23
Масштаб просмотра для элемента QuickRep


11-1186390400
Alexey_k
2007-08-06 12:53
2008.03.23
Не устанавливается библиотека kolics


9-1168463037
@!!ex
2007-01-11 00:03
2008.03.23
Оптимизация.


11-1186050008
Andrey_rus
2007-08-02 14:20
2008.03.23
Выравнивание контролов


6-1183112626
Barsky
2007-06-29 14:23
2008.03.23
Как считать значение checkbox с формы документа?