Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-49270
Феликс
2002-12-25 21:20
2003.01.16
Группа


1-48997
coder-lamer
2003-01-07 01:36
2003.01.16
Очень простой вопрос.


7-49326
newb
2002-11-03 19:48
2003.01.16
DriveComboBox


14-49226
В. М.
2002-12-26 02:07
2003.01.16
String


3-48960
@andrew
2002-12-23 11:27
2003.01.16
ПРИВЕТ ВСЕМ! Метод Locate возвратит мне true и...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский