Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.16;
Скачать: CL | DM;

Вниз

фильтр   Найти похожие ветки 

 
Senator ©   (2002-12-19 17:29) [0]

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


 
KoluChi ©   (2002-12-19 17:34) [1]

Пошаговая отладка может спасти.


 
Senator ©   (2002-12-19 17:36) [2]

Я понимаю, что может, но что тут спасать, если первый раз while not EOF do выполняеться, а потом, нет - типа конец файла, а данные в таблице обновляються!


 
myor   (2002-12-19 17:42) [3]

напиши, что именно while not EOF do...
может у тебя выход из цикла, а может нужно do begin...end?


 
KoluChi ©   (2002-12-19 17:50) [4]

А DataSet.First() делаем?


 
Senator ©   (2002-12-19 17:53) [5]

пишу:
CurrentEventID-глобальная
procedure TMainForm.Timer1Timer(Sender: TObject);
begin
EventTable.Filtered:=False;
EventTable.Refresh;
EventTable.Filter:="idevent>"+IntToStr(CurrentEventID);
EventTable.Filtered:=True;
with EventTable do
begin
first;
while not EOF do
begin
...
CurrentEventID:=FieldByName("idEvent").AsInteger;
next;
end; //while
end;


 
myor   (2002-12-19 18:01) [6]

...
CurrentEventID:=FieldByName("idEvent").AsInteger;

получил idEvent и что с ним делаешь?



 
Senator ©   (2002-12-19 18:03) [7]

я просто хочу фильтровать каждый раз по >последний ID


 
Vick ©   (2002-12-19 18:06) [8]

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


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

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


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

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

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


 
Vick ©   (2002-12-19 18:12) [11]

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

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


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

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


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

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

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

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

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


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

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


 
Senator ©   (2002-12-20 10:33) [15]

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


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

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



 
Senator ©   (2002-12-20 10:48) [17]

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


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


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

??????????


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


timer1.interval

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

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



 
ЮЮ ©   (2002-12-20 10:56) [19]

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


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

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


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

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


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


ЮЮ © (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...


 
ЮЮ ©   (2002-12-20 11:27) [23]

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


 
Senator ©   (2002-12-20 11:31) [24]

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


 
ЮЮ ©   (2002-12-20 11:37) [25]

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


 
myor ©   (2002-12-20 11:43) [26]


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


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


 
Senator ©   (2002-12-20 11:47) [27]

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



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

Текущий архив: 2003.01.16;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.025 c
3-48930
oleon
2002-12-20 12:27
2003.01.16
Шифрование пароля для доступа к БД.


1-48975
ShaH
2003-01-06 15:12
2003.01.16
Как в проект Delphi подключить модуль написанный на C++ Builder e


3-48882
std79
2002-12-19 11:42
2003.01.16
Float поле в IB. 6,2 превращает в 6,19999980926514


1-49032
Геннадий
2003-01-07 22:26
2003.01.16
Обработка OnMouseMove для TRadioGroup - КАК ?


1-49024
boby_g
2003-01-07 17:37
2003.01.16
Вопрос о компонентом TEdit