Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.006 c
3-1193207750
AlexeyMir
2007-10-24 10:35
2008.03.16
Троеточие в ячейке DBGrida


2-1202729073
Vayrus
2008-02-11 14:24
2008.03.16
FastFileCopy


3-1193096147
DimaL
2007-10-23 03:35
2008.03.16
Транзакции в ADO


2-1203124705
DJ_UZer
2008-02-16 04:18
2008.03.16
Ссылка


15-1202375660
@!!ex
2008-02-07 12:14
2008.03.16
Компиляция двух вариантов





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский