Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.10.2009, 08:43
Alex_S_S Alex_S_S вне форума
Прохожий
 
Регистрация: 07.05.2009
Сообщения: 41
Репутация: 10
По умолчанию Фильтрация

Всем доброго времени суток!

Есть проблема, может кто подскажет. Использую midas и ClientDataSet. В таблице есть поле с датой-временем. При записи новых данных в таблицу необходимо проверить есть ли такая запись в таблице. Данные могут быть отфильтрованы по времени, поэтому, чтобы сделать проверку делаю отмену фильтрации. Вот так
Код:
cdsData.Filtered := false;
if cdsData.Locate('FDateTime',RecieveDT,[]) then IsRecord := true;
cdsData.Filtered := true;

Проблема в том что это жутко тормозит. Может кто-нибудь что-нибудь посоветует.

У таблицы cdsData установлены следующие свойства (это в Object Inspector для таблицы)
(есть два основных поля FID и FDateTime)

IndexFieldNames - FID;FDateTime;
IndexName - пусто
MasterFields - FID

У каждого поля в таблице есть свойство KeyFields может в них что то надо выставить?

Подскажите пожалуйста если есть специалисты по БД
Ответить с цитированием
  #2  
Старый 13.10.2009, 16:07
Alex_S_S Alex_S_S вне форума
Прохожий
 
Регистрация: 07.05.2009
Сообщения: 41
Репутация: 10
По умолчанию

Господа, неужели нет специалистов в области работы компонентов для БД?
Может хоть подскажете это глюки ClientDataSet или нет?
Если да, что можно использовать в замен?
Ответить с цитированием
  #3  
Старый 13.10.2009, 17:42
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Слушай дарааагой, куда спешишь? А?
Погод какой мокрый, А?
Урюк невкусный совсэм.
База она как дэвушка, ее спросить надо. Вот волшебный слов:
Код:
эыудусе * акщь ЬнЕфиду цруку АВфеуЕшьу=ЖАВфеуЕшьуэ;
шыКусщкв Ж= тще Йгукн1.ШыУьзенж
Если ты волшебный язык не знать я тебе подсказка дам:
Код:
Query1.SQL.Text := 'select * from MyTable where FDateTime=:FDateTime';
IsRecord := not Query1.IsEmpty;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 13.10.2009 в 17:45.
Ответить с цитированием
  #4  
Старый 15.10.2009, 06:55
Alex_S_S Alex_S_S вне форума
Прохожий
 
Регистрация: 07.05.2009
Сообщения: 41
Репутация: 10
По умолчанию

Да как настроить фильтрацию я знаю.

Код:
cdsData.Filter := '[FDateTime]>='+QuotedStr(DateTimeToStr(BeginTimeView))
                                + 'and [FDateTime]<='+QuotedStr(DateTimeToStr(EndTimeView));

вопрос в том почему отмена и установка этого фильтра жутко тормозит процесс работы программы

Хотя даже и визуализацию этого процесса также блокирую

Код:
cdsData.DisableControls;
cdsData.Filtered := false;

//Здесь проверка 

cdsData.Filtered := true;
cdsData.EnableControls;
Ответить с цитированием
  #5  
Старый 15.10.2009, 08:11
Alex_S_S Alex_S_S вне форума
Прохожий
 
Регистрация: 07.05.2009
Сообщения: 41
Репутация: 10
По умолчанию

или что то другое имелось ввиду?
Ответить с цитированием
  #6  
Старый 16.10.2009, 13:20
Alex_S_S Alex_S_S вне форума
Прохожий
 
Регистрация: 07.05.2009
Сообщения: 41
Репутация: 10
По умолчанию

"Есть ещё здесь хоть кто то кроме меня"
Ответить с цитированием
  #7  
Старый 16.10.2009, 13:35
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Я например заглядываю изредка.
Что-бы тормозило меньше есть много вариантов решения.
1. Начните с простого, установите курсор на сервере а не на клиенте. CursorLocation
2. Ограничьте количество возвращаемых результатов - MaxRecords
3. Воспользуйтесь компонентами которые умеют считывать данные по мере требования. Например cxGrid из DevExpress.
4. Может имеет смысл использовать асинхронные запросы для выборок с большим временем исполнения.
5. Постройте индексы по всем полям.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #8  
Старый 17.10.2009, 06:13
Alex_S_S Alex_S_S вне форума
Прохожий
 
Регистрация: 07.05.2009
Сообщения: 41
Репутация: 10
По умолчанию

Это локальная база данных. Она не делает SQL запросы с сервера
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:19.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter