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

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

фильтр [D6, IB6.x]


Страницы:   1 2

Senator ©   (2002-12-19 17:29:00) 

Подскажите пожалста!
Почему не обновляються данные в таблице (текст ниже в таймере)?
EventTable.Filtered:=False;
EventTable.Refresh;
EventTable.Filter:="idevent>"+IntToStr(CurrentEventID);
EventTable.Filtered:=True;
first;
while not EOF do
....
Первый раз обновляет, потом не хочет


Senator   (2002-12-20 11:47:00) [1]

Так ладно, спасибо всем...


myor   (2002-12-20 11:43:00) [2]


> Тогда используй запрос и не мучай ни нас, ни базу


мне нечего добавить


ЮЮ   (2002-12-20 11:37:00) [3]

Тогда используй запрос и не мучай ни нас, ни базу


Senator   (2002-12-20 11:31:00) [4]

Paradox
Close + Open - будет Очень долго, так как сама БД находиться в другом городе и большая (порядка сот тысяч записей)


ЮЮ   (2002-12-20 11:27:00) [5]

В Неlpe написано "In particular,TQuery components do not support", т.е. в частности это не работает в TQuery, но нигде не гарантируется, что это работает в TEventTable. За сутки мог бы хоть признаться, что за таблицу используешь.
Замени Refresh на Close + Open и сравни результаты


Senator   (2002-12-20 11:22:00) [6]


ЮЮ © (20.12.02 10:56)>кроме увеличения времени работы
C каких пор запрос работает медленнее чем Table.Refresh? И работает ли Table.Refresh вообще? Т.к. в Helpe написано
Note: The Refresh method does not work for all TDataSet descendants.


Help дочитывать надо до конца, ...for all TDataSet - а дальше - на запросах он и не работает, а в примере к нему - работа с TTable...


myor   (2002-12-20 11:16:00) [7]

присоединяюсь к ЮЮ но чуть с другой стороны
зачем тебе filter и refresh в таймере ?
уж лучше фильтровать при необходимости (при запросе к данным),
а это как раз select


Senator   (2002-12-20 10:56:00) [8]

Добавление записей происходит автоматом из другой проги, каждую минуту 5-15 записей(иногда больше), так что, они добавляються 100пудово...


ЮЮ   (2002-12-20 10:56:00) [9]

>кроме увеличения времени работы
C каких пор запрос работает медленнее чем Table.Refresh? И работает ли Table.Refresh вообще? Т.к. в Helpe написано
Note: The Refresh method does not work for all TDataSet descendants.


myor   (2002-12-20 10:53:00) [10]


> Записи вставляються из другой проги.

??????????


> Период таймера 1-5 мин, еще не знаю, думаю успевает пройти
> ????


timer1.interval

попробуй добавить запись и напиши!!!!
ведь, если ты не добавляешь новых записей, то отфильтрованная таблица будет такой же

попробуй добавить запись и напиши!!!!


Senator   (2002-12-20 10:48:00) [11]

А разница ???? кроме увеличения времени работы (запрос на плоскую таблицу) ниче не меняеться


ЮЮ   (2002-12-20 10:45:00) [12]

Может вместо
EventTable.Filtered:=False;
EventTable.Refresh;
EventTable.Filter:="idevent>"+IntToStr(CurrentEventID);
EventTable.Filtered:=True;
Посылать запрос SELECT ... WHERE idevent>:EventID ???


Senator   (2002-12-20 10:33:00) [13]

Записи вставляються из другой проги.
Период таймера 1-5 мин, еще не знаю, думаю успевает пройти ????


myor   (2002-12-20 10:26:00) [14]

кстати, а какой период таймера?
прога хоть успеет пройтись по таблице while not eof?


myor   (2002-12-20 10:24:00) [15]

а значение этого
> "последнего id"

меняется?
похоже- нет!
прога фильтрует по "последнему id",
определяет в цикле новый "последний id"- тот же самый
и по таймеру опять фильтрует по тому же значению

или у тебя где-то есть вставка строки в EventTable?

попробуй добавить запись и напиши.


Senator   (2002-12-20 09:32:00) [16]

Да, но весь этот кусок кода находиться в таймере....


Vick   (2002-12-19 18:12:00) [17]

Senator, эт ясно
>....
>Первый раз обновляет, потом не хочет

потом, это когда, если у тебя CurrentEventID глобальная, то она остается с последним значением записанным в нее в цикле...


myor   (2002-12-19 18:10:00) [18]

так вот где ты это делаешь?
в цикле я виже только определение этого "последнего id" и присвоение его значения переменной

...первый раз while not EOF do выполняеться, а потом, нет...
похоже, выполняется ЭТО еще до цикла:
EventTable.Filter:="idevent>"+IntToStr(CurrentEventID);
EventTable.Filtered:=True;
а в самом цикле такого нет


Senator   (2002-12-19 18:09:00) [19]

в цикле меняеться, но фильтр стоит до цикла


Vick   (2002-12-19 18:06:00) [20]

Внимательно следи какое значение CurrentEventID принимает при начале выполнения этого события... А то оно у тебя на протяжении цикла меняется n-ное кол-во раз...


Страницы:   1 2

Наверх

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