![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
Redstuff |
|
||||
![]() Команда REDSTUFF ![]() ![]() Профиль Группа: Участник Сообщений: 497 Регистрация: 27.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Столкнулся с проблемой перехода к записи в таблице, которая содержит картинки.
Есть таблица, но не во всех записях содержится картинка и возникает следующая ошибка: (8 строка)
Участок кода:
Как можно решить проблему? Хотелось бы получать в pictureBox1 текстовую надпись "картинка отсутствует" (без применения картинок хранящихся в бд) или вовсе пустой pictureBox1. На ум приходит лишь одна мысль, загружать картинки с надписью "картинка отсутствует", но может есть лучше решение? Это сообщение отредактировал(а) Redstuff - 21.8.2007, 23:01 |
||||
|
|||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Изменяем код :
|
|||
|
||||
Redstuff |
|
||||
![]() Команда REDSTUFF ![]() ![]() Профиль Группа: Участник Сообщений: 497 Регистрация: 27.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Idsa, а в запросе не надо ничего менять? Потому как
это условие выполняется всегда... И ошибка на строку
|
||||
|
|||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
||||
|
||||
Redstuff |
|
|||
![]() Команда REDSTUFF ![]() ![]() Профиль Группа: Участник Сообщений: 497 Регистрация: 27.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Idsa, содержание таблицы примерно такое (упрощенный пример):
ID | Name | Photo .... ----------------------------------- 1 | samsung | pic1 ..... 2 | asus | null .........
|
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Поставь breakpoint на строчку 11 и посмотри, чему равен barrImgObj для строки, в которой нет фотографии.
|
|||
|
||||
Redstuff |
|
|||
![]() Команда REDSTUFF ![]() ![]() Профиль Группа: Участник Сообщений: 497 Регистрация: 27.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
barrImgObj = {}
barrImg = null |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Действительно, значение не приводится к null...
Тогда предлагаю вот такой вариант через try-catch:
|
|||
|
||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 11 Всего: 170 |
просто null и DBNull (который возвращается из базы при отсутсвии картинки) - это разные вещи... DBNull - это объект класса, а null - пустой указатель, указатель на ничто.
MSDN
Redstuff, ты не пробовал вместо if (barrImgObj != null) юзать if (barrImgObj != DBNull.Value) ? -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
Idsa |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Действительно. Тогда получим два рабочих варианта: Через if (с dbNll):
и через try-catch:
Если во второй вариант добавить catch'и для con.Open и fs.Write, то вообще красота получится ![]() |
||||||
|
|||||||
Redstuff |
|
||||
![]() Команда REDSTUFF ![]() ![]() Профиль Группа: Участник Сообщений: 497 Регистрация: 27.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Спасибо все работает, но надо теперь чтобы было уведомление об отсутствии картинки или просто ее отсутствие в pictureBox.
Next
Когда попадаю на запись, которая не содержит картинки то вижу картинку notphoto.jpg После двигаюсь дальше или в обратном направлении, она попрежнему висит Пробовал так:
Но намного лучше не стало... Пока писал уже 2 поста) Это сообщение отредактировал(а) Redstuff - 22.8.2007, 13:14 |
||||
|
|||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Это потому что существующую картинку ты выводить через BackgroundImage, а "несуществующую" - через Image. Выбери один вариант и используй его для обоих случаев. |
|||
|
||||
Redstuff |
|
|||
![]() Команда REDSTUFF ![]() ![]() Профиль Группа: Участник Сообщений: 497 Регистрация: 27.5.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Idsa, спасибо!
|
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
||||
|
||||
tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 11 Всего: 170 |
OFFTOP...
![]() не в обиду будь сказано, но... обработку исключений обычно тогда, когда программист не может предусмотреть какая сложится run-time ситуация. Здесь же налицо элементарная проверка типа возвращенного значения (малоизвестного, как оказалось, правда ... ) Не проще ли проверить тип полученного объекта (который явно может быть или DBNull или byte[]), и выйти из процедуры, чем ждать, пока CLR создат, инициализирует и выбросит объект исключения, а потом будет проверять по стеку наличие обработчика на перехват?.. есть еще третий рабочий вариант: в EntryPoint программы все загнать в AppDomain.UnhandledException и в обработчике написать что-то типа "Вах! Что-то прошло не так!" ![]() -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |