Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как правильно построить структуру для работы с БД [D7, AbsoluteDatabase]


Новичёк ©   (2007-03-19 23:46:00) 

Начал изучать Delphi при работе с БД.
Решил вначале для пробы написать всё тот же телефонный справочник.
Список строю при помощи Query.
Добавление, удаление, редактирование так же через ExecSQL после чего что бы изменения отобразились в текущем списке делаю query.refresh
Вот при записях за 500 наблюдается неприятное зависание при refresh
Подскажите правильно ли я делаю или как-то по-умному нужно организовать это. Работать с table как-то нехочется, т.к. sql намного гибче по-моему.
Буду благодарен за любй ответ


ЮЮ   (2007-03-21 03:46:00) [1]


> в where есть несколько ещё условий отбора: пару EXIST и
> LIKE

Станно видеть EXIST в выборке, по сути, из одной таблицы
Код запроса приведи. Похоже, тормаза в нем, ибо [13]


Anatoly Podgoretsky   (2007-03-20 21:00:00) [2]

> Плохиш  (20.03.2007 12:25:10)  [10]

Не тормозит она, летает.


Sergey13   (2007-03-20 13:05:00) [3]

> [9] Новичёк   (20.03.07 12:13)

Индексы хоть какие то есть? А вообще, ИМХО, у [2] ЮЮ ©   (20.03.07 04:09) уже все сказано по этой проблеме.


Новичёк   (2007-03-20 12:45:00) [4]

я же написал, что и через BDE то же самое.

скажите, а условия отбора влияют на это существенно или нет?
у меня, например, в where есть несколько ещё условий отбора: пару EXIST и LIKE


Плохиш   (2007-03-20 12:25:00) [5]


> Новичёк   (20.03.07 12:13) [9]

Стоит поинтересоваться у разработчиков, почему их бд так тормозит.


Новичёк   (2007-03-20 12:13:00) [6]

торможу насчёт DataSource

DataSet  - query из  AbsoluteDatabase, хотя пробовал и через BDE подвисания те же.  хотя возможно 2 секунды это нормально?


Плохиш   (2007-03-20 12:12:00) [7]


> DataSet-ы чисто дельфийсие, вроде к BDE никакого отношения
> не имеют

Не пора ли почитать чего для начала?


Новичёк   (2007-03-20 12:08:00) [8]

tel
===
numb    номер телефона
FIO      ФИО
nDom    номер дома\квартиры
kod_ul   код улицы
kod_r    код района

ul
==
kod
naimen

rajon
====
kod
naimen

Запрос типа такого:

select s.*, u.naimen, r.naimen from spr s, ulizy u, rajon r
where (kod_ul=u.kod) and (kodR=r.kod)
order by FIO

ну и далее через другой query делаю insert spr  а тут refresh или close\open

DataSet-ы чисто дельфийсие, вроде к BDE никакого отношения не имеют


ЮЮ   (2007-03-20 10:30:00) [9]

>база локальная. как видно из названия сторонняя библиотека AbsoluteDatabase

А DataSet-ы тоже сторонние, или BDE-шные?


ЮЮ   (2007-03-20 10:29:00) [10]

> , так как данные берутся с 3 таблиц.

И втавляешь запросом сразу в три? И удаляешь из трех?
Запрос на выборку приведи хотя бы


Новичёк   (2007-03-20 09:56:00) [11]

>>Методы Insert, Post есть и у TQuery, при этом запись добавляется непосредственно в TQuery и не требуется Refresh.

Интересно, буду учить, спасибо, хотя сейчас немного сомневаюсь работает ли это, так как данные берутся с 3 таблиц.

>>P.S.  чо за комп такой, который всего-лишь 500 записей долго перепрочитывает?

двухядерный атлон.  база локальная. как видно из названия сторонняя библиотека AbsoluteDatabase


zdm   (2007-03-20 07:59:00) [12]

самый надежный способ-это "ни чего не надо перерисовывать" во время, добавления(и тем более обновления), на это время лучше запустить "заставку", с надписью или gif-ом-типа "обождите, не захлопывайте", а уже потом Query.Close, Query.Open
P.S.  чо за комп такой, который всего-лишь 500 записей долго перепрочитывает? Или БД на северном полюсе по Dial-Up?


ЮЮ   (2007-03-20 04:09:00) [13]

Методы Insert, Post есть и у TQuery, при этом запись добавляется непосредственно в TQuery и не требуется Refresh. При этом на сервер отправляются те же саые запросы, что ты выполняешь своим кодом при ExecSQL (при кэшировании изменений, правда, не надо забывать про ApplyUpdates ). Если же хочется полностью контролировать текст этих запросов, то в пару к TQuery есть TUpdateSQL


Германн   (2007-03-20 01:40:00) [14]


> Вот при записях за 500 наблюдается неприятное зависание
> при refresh

Да. Неприятно. 500 - это не количество для базы данных.
А может проблема связана с отображением результата запроса, а не с самим запросом? DisableControls/EnableControls могут помочь в этом случае.


Наверх

Титульная страница Поиск, карта сайта Написать письмо