Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.16;
Скачать: CL | DM;

Вниз

Работа с 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
2-1203378891
Artem
2008-02-19 02:54
2008.03.16
Вопрос по colordialog1.Color


2-1203344851
ван
2008-02-18 17:27
2008.03.16
packed record


15-1202329724
No_Dead
2008-02-06 23:28
2008.03.16
Подскажите софтинку


2-1202950288
Lampochka
2008-02-14 03:51
2008.03.16
Поиск файла в NTFS


15-1202066864
Student00
2008-02-03 22:27
2008.03.16
Экспорт из Delphi 7 в xml