|
#1
|
|||
|
|||
Фильтрация
Всем доброго времени суток!
Есть проблема, может кто подскажет. Использую 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
|
|||
|
|||
Господа, неужели нет специалистов в области работы компонентов для БД?
Может хоть подскажете это глюки ClientDataSet или нет? Если да, что можно использовать в замен? |
#3
|
||||
|
||||
Слушай дарааагой, куда спешишь? А?
Погод какой мокрый, А? Урюк невкусный совсэм. База она как дэвушка, ее спросить надо. Вот волшебный слов: Код:
эыудусе * акщь ЬнЕфиду цруку АВфеуЕшьу=ЖАВфеуЕшьуэ; шыКусщкв Ж= тще Йгукн1.ШыУьзенж Код:
Query1.SQL.Text := 'select * from MyTable where FDateTime=:FDateTime'; IsRecord := not Query1.IsEmpty; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 13.10.2009 в 17:45. |
#4
|
|||
|
|||
Да как настроить фильтрацию я знаю.
Код:
cdsData.Filter := '[FDateTime]>='+QuotedStr(DateTimeToStr(BeginTimeView)) + 'and [FDateTime]<='+QuotedStr(DateTimeToStr(EndTimeView)); вопрос в том почему отмена и установка этого фильтра жутко тормозит процесс работы программы Хотя даже и визуализацию этого процесса также блокирую Код:
cdsData.DisableControls; cdsData.Filtered := false; //Здесь проверка cdsData.Filtered := true; cdsData.EnableControls; |
#5
|
|||
|
|||
или что то другое имелось ввиду?
|
#6
|
|||
|
|||
"Есть ещё здесь хоть кто то кроме меня"
|
#7
|
||||
|
||||
Я например заглядываю изредка.
Что-бы тормозило меньше есть много вариантов решения. 1. Начните с простого, установите курсор на сервере а не на клиенте. CursorLocation 2. Ограничьте количество возвращаемых результатов - MaxRecords 3. Воспользуйтесь компонентами которые умеют считывать данные по мере требования. Например cxGrid из DevExpress. 4. Может имеет смысл использовать асинхронные запросы для выборок с большим временем исполнения. 5. Постройте индексы по всем полям. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#8
|
|||
|
|||
Это локальная база данных. Она не делает SQL запросы с сервера
|