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

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

Не обновляется набор данных [D5, FireBird]


RDA ©   (2003-06-22 11:47:00) 

Использую FIBPlus.
Текст запросов

SelectSQL - select * from ORG where STATUS="0"

и для обновления

UpdateSQL - select * from ORG where ( STATUS="0" ) and ( ORG.ID = ?OLD_ID )

Выполняется следующий код

with DM do
if not DovOrg.IsEmpty then
if (Application.MessageBox("Вилучити запис?","Підтвердження",MB_YESNO+MB_ICONQUESTION)=idYES) then
begin
DovOrg.Edit;
DovOrgSTATUS.AsInteger:=1;
DovOrg.Post;
end;

После чего запись видна в гриде, хотя вижу точно в IBManager что поле статус изменено.
Из опций TfibDataSet
AutoCommit=True
Options=[poTrimCharFields,poRefreshAfterPost,poStartTransaction,poAutoFormatFields,poAllowChangeSqls]


Zacho   (2003-06-24 12:51:00) [1]


> RDA © (24.06.03 12:49)

На этот вопрос уже ответил Johnmen © (23.06.03 10:44)


RDA   (2003-06-24 12:49:00) [2]

Нет. Такое решение возмлжно при отсутсвии других. Набор рефрешится. Да.Почему не работает?


Zacho   (2003-06-24 10:57:00) [3]


> RDA © (24.06.03 10:53)

Filtered:=true;
и в обработчике OnFilterRecord что-то типа
Accept:=DovOrgSTATUS.AsInteger:=0;


RDA   (2003-06-24 10:53:00) [4]

На запрос, удовлетворяющий условиям, наложить фильтр?


Zacho   (2003-06-24 09:35:00) [5]


> RDA © (23.06.03 15:01)

А чем фильтр не устраивает ? Записи конечно никуда не исчезнут, но видно их не будет.


RDA   (2003-06-23 15:01:00) [6]

Неужели нет другого решения?


Johnmen   (2003-06-23 10:44:00) [7]

Вижу. Должен. Вот только рефреш предполагает обновление одной и только одной записи, то есть select д.вернуть одну...Здесь это не так. И, видимо, придется переоткрывать.


RDA   (2003-06-23 10:30:00) [8]

>>Zacho
Это не решение вопроса, кроме того Johnmen смотри первый пост
Options=[poTrimCharFields,poRefreshAfterPost,poStartTransaction,poAutoFormatFields,poAllowChangeSqls]

Набор должен рефрешиться после поста автоматом.


Zacho   (2003-06-23 10:10:00) [9]


> RDA © (23.06.03 10:08)

Просто сделай фильтр по этому полю.


RDA   (2003-06-23 10:08:00) [10]

>>Johnmen
Нет. Я пробовал.


Johnmen   (2003-06-23 09:48:00) [11]

А что, просто вызов Refresh не помогает ?


RDA   (2003-06-23 09:40:00) [12]

Но ведь кеш, если не ошибаюсь, настраивается. Можно ли как-то избежать переоткрытия набора?


Zacho   (2003-06-23 09:11:00) [13]

А так и должно быть. Запись уже есть в кэше датасета - и исчезнуть она может только при переоткрытии запроса, или если ее удалить.


RDA   (2003-06-23 09:02:00) [14]

Поднимаю вопрос


RDA   (2003-06-22 12:04:00) [15]

Сори, второй текс запроса для RefreshSQL.


RDA   (2003-06-22 11:55:00) [16]

Добавил две строчки и код выглядит так

with DM do
if not DovOrg.IsEmpty then
if (Application.MessageBox("Вилучити запис?","Підтвердження",MB_YESNO+MB_ICONQUESTION)=idYES) then
begin
DovOrg.Edit;
DovOrgSTATUS.AsInteger:=1;
DovOrgDATASTATUS.AsDateTime:=Date;
DovOrg.Post;
DovOrg.Active:=False;
DovOrg.Active:=True;
end;

Все нормально. Но ведь должно быть иначе, или нет?


Наверх

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