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

Вниз

Как правильно построить структуру для работы с БД   Найти похожие ветки 

 
Новичёк   (2007-03-19 23:46) [0]

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


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


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

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


 
ЮЮ ©   (2007-03-20 04:09) [2]

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


 
zdm ©   (2007-03-20 07:59) [3]

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


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

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

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

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

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


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

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

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


 
ЮЮ ©   (2007-03-20 10:30) [6]

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

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


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

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 12:12) [8]


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

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


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

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

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


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


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

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


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

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

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


 
Sergey13 ©   (2007-03-20 13:05) [12]

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

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


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

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

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


 
ЮЮ ©   (2007-03-21 03:46) [14]


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

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



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

Форум: "Начинающим";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.04 c
15-1173669834
Slider007
2007-03-12 06:23
2007.04.08
С днем рождения ! 10 марта


2-1174045916
Kolan
2007-03-16 14:51
2007.04.08
А AV в модуле rtl100.bpl что значит ? Дубль два.


15-1174047042
Gorlum
2007-03-16 15:10
2007.04.08
Ну раз "Прочее", отважусь спросить...:)


9-1146876433
TDummyCube
2006-05-06 04:47
2007.04.08
Как найти локальную матрицу, если есть две глобальные?


15-1173573167
Raid
2007-03-11 03:32
2007.04.08
Кто нибудь пробовал ставить Виндос на флеш память?





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