Форум: "Базы";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];
ВнизРабота с Blob Найти похожие ветки
← →
dik (2007-10-26 00:25) [0]Уважаемые мастера, задачка вроде бы простая, требуется очистить поле с картинкой.
Картинка в поле Field, тип TBlobField.
делаю:
Field.DataSet.Edit;
Field.Value := Null;
или
Field.DataSet.Edit;
Field.Clear;
или
Field.DataSet.Edit;
Field.Value := "";
В любом случае после указанных операций вижу в отладчике:
Field.OldValue = Field.NewValue = картинка
очистки поля не происходит,
а признак модификации Field.Modified = false
Если не поскажете, в чем дело, пойду лечиться, т.к. глазам своим уже не верю.
← →
kaif © (2007-10-26 02:09) [1]Я не помню этой темы. Если подключен какой-нибудь TDBImage для отображения картинки, то, кажется, я присваивал nil объекту Bitmap. Что-то вроде DBImage1.Picture.Bitmap.Assign(nil). И то это не сразу работало. Но "вслепую" как очистить - не помню. Допускаю, что даже простое присутствие визуального компонента может каким-то образом мешать очистить поле так, как Вы пытаетесь это сделать. Для меня класс TGraphic Delphi всегда оставался несколько непонятным. Похоже, что было бы лучше, если бы это был интерфейс, а не класс.
Если сморозил ересь, прошу простить.
Просто компетентных ответов на вопрос пока я не поступило, поэтому я пытаюсь подать хоть какое-то направление для поиска решения. :)
← →
Германн © (2007-10-26 02:18) [2]
> kaif © (26.10.07 02:09) [1]
> Просто компетентных ответов на вопрос "пока я не поступило",
> поэтому я пытаюсь подать хоть какое-то направление для
> поиска решения. :)
>
Кавычки добавил я. Извини, Ашот.:)
Ну тогда и я выскажусь, раз "компетентных ответов" пока не было. А метод Post вызывается? Про Refresh может быть скажу позже. :)
← →
dik (2007-10-26 08:26) [3][1] ...DBImage1.Picture.Bitmap.Assign(nil)....
Пробовал, только нужно делать DBImage1.Picture := nil;
не помогает, хотя картинка и очищается но не происходят изменения в поле Field.
[2]...метод Post вызывается?...
Разумеется, и Refresh срабатывает, да что толку, если в базу изменения просто не ушли, поскольку не было измения в самом поле.
← →
Виталий Панасенко © (2007-10-26 09:24) [4]Field.Clear
r
> В любом случае после указанных операций вижу в отладчике:
>
> Field.OldValue = Field.NewValue = картинка
А это очень похоже на то, что используется кешапдейт.. И, как вариант, не вызывается AppllyUpdates
← →
Правильный_Вася (2007-10-26 11:12) [5]Field.Clear работает великолепно
еще лучше работает UPDATE x SET y = NULL
← →
dik (2007-10-26 11:54) [6]Спасибо всем, разобрался.
При очистке поля типа TBlobField не порождается событие DataEvent, хотя и должно порождаться, чтобы связанный с полем контрол мог отреагировать на изменение данных, кроме того, не выставляется флаг Field.Modified, и когда датасет пытается сохранить только измененные поля, он оказывается грубо обманутым. Проконтролировать эту ситуацию (что-то было в поле и поле было очищено) в стандартных компонентах (DB, IDB) невозможно, во всяком случае я такого способа не нашел. Поэтому приходится теперь сохранять все имеющиеся Blob поля, были они изменены или нет.
Не знаю, в компонентах FIBplus этот глюк убран?
← →
Ega23 © (2007-10-26 11:55) [7]А где Post?
← →
Правильный_Вася (2007-10-26 11:58) [8]
> не порождается событие DataEvent
байки
в Бде и дбэкспресс, слиентдатасете - везде порождается
← →
dik (2007-10-26 12:51) [9]У меня IB-компоненты, проследил пошагово, не байки.
← →
kaif © (2007-10-26 13:46) [10]Я использую IBX6.04 под D6.
Вообще скачай обновление IBX, возможно у тебя старая версия. Вроде бы у меня таких проблем не возникало, во всяком случае методы Picture.Assign(nil) или Picture.Bitmap.Assign(nil) в визуальных контролах у меня давали требуемый результат.
← →
Маша Шрайбер © (2007-10-26 14:23) [11]Вполне возможно, что не байки, т.к. содержимое блоб поля и работа с ним никаким боком не связана с набором данных, якобы его содержащим. По кр.мере это справедливо для IB/FB.
← →
Johnmen © (2007-10-28 00:09) [12]
> Маша Шрайбер © (26.10.07 14:23) [11]
При использовании библиотек прямого доступа, следует добавить.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2008.03.16;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c