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

Вниз

Как правильно работать с базами 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.007 c
15-1202698605
Буран
2008-02-11 05:56
2008.03.23
Как откомпилировать сишную dll в Билдере?


15-1202318731
Ne\Ld
2008-02-06 20:25
2008.03.23
Скажите пожалуйста можно ли и если можно то как поставить win xp


2-1204031664
Uno-84
2008-02-26 16:14
2008.03.23
Компонент ListBox


2-1204030983
Chorniy
2008-02-26 16:03
2008.03.23
Функция GetWindowDC() возвращает разный HDC?


2-1204030372
vegarulez
2008-02-26 15:52
2008.03.23
Вопрос про создание TLabel.





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