Форум: "Базы";
Текущий архив: 2003.01.16;
Скачать: [xml.tar.bz2];
Внизфильтр Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.011 c