![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не обновляется набор данных [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;
Все нормально. Но ведь должно быть иначе, или нет?