Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хочу, чтоб NULL был NULL, а не 0! VS.NET2005, где преобразуется?? 
V
    Опции темы
Papirus
  Дата 3.7.2006, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 19.4.2005
Где: Санкт-Петербург

Репутация: -1
Всего: 1



VS.NET2005 & SQL server 2000
Такая вот байда.
В БД есть таблица, в которой одно из полей типа smallint и большинство записей имеют неопределенное значение NULL.
В DataGridView - в этом поле вместо Null отображается 0. Более того при обращению к записи в таблице датасета это поле также возвращает 0 вместо NULL.

PreviewData - отображает пустые ячейки там где NULL. smile 

Заранее благодарен за помощь! 
PM MAIL ICQ   Вверх
mr.DUDA
Дата 3.7.2006, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Чтобы вместо "0" были другие значения - настраиваем свойство DefaultValue у колонки таблицы. Или, если значение уже приходит по select-запросу - настраиваем соотв. свойство в настройках поля таблицы SQL Server. Если же нужно проверить, что именно находится в колонке (пустое значение или 0) - сравниваем значение dataRow[index] с DBNull.Value (пресловутый NULL). Если типы не совпадают - например, в колонке лежит int а нет DBNull - значит имеем дело с заполненным полем таблицы. 


--------------------
user posted image
PM MAIL WWW   Вверх
Papirus
Дата 4.7.2006, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 19.4.2005
Где: Санкт-Петербург

Репутация: -1
Всего: 1



Код

If Not IsDBNull(rw.Item("PositionChild")) Then

В 2003 этот код срабатывал корректно - в 2005 rw.Item("PositionChild")=0 почему-то.  smile 
Цитата(mr.DUDA @  3.7.2006,  21:40 Найти цитируемый пост)
настраиваем свойство DefaultValue у колонки таблицы


DefaultValue - это ведь для новой записи?! А у меня существующие отображаются как 0, а не как пустая ячейка и судя по всему такое значение подставляется вместо NULL уже в таблице датасета. У меня могут быть и 0 значения, но пользователь должен видеть, что в ячейке 0 или NULL. smile

Добавлено @ 08:56 
Цитата(mr.DUDA @  3.7.2006,  21:40 Найти цитируемый пост)
если значение уже приходит по select-запросу

Приходит NULL.
 
PM MAIL ICQ   Вверх
mr.DUDA
Дата 4.7.2006, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Можно попробовать копнуть в сторону DataGridViewCellStyle.NullValue 


--------------------
user posted image
PM MAIL WWW   Вверх
Papirus
Дата 4.7.2006, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 19.4.2005
Где: Санкт-Петербург

Репутация: -1
Всего: 1



Цитата(mr.DUDA @  4.7.2006,  11:05 Найти цитируемый пост)
Можно попробовать копнуть в сторону DataGridViewCellStyle.NullValue 

Кроме (Throw Exeption) ничего не дает выбрать. Кричит, что поле не стринг, потому низзя!!

Добавлено @ 11:12 
Интересно. А это только у меня? 
PM MAIL ICQ   Вверх
mr.DUDA
Дата 4.7.2006, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Всё замечательно работает:
 

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  WindowsApplication1.zip 67,65 Kb


--------------------
user posted image
PM MAIL WWW   Вверх
Papirus
Дата 5.7.2006, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 19.4.2005
Где: Санкт-Петербург

Репутация: -1
Всего: 1



Спасибо, mr.DUDA!

Всему причиной моя тупость  - дело и впрямь оказалось в DefaultValue (=0) таблицы БД. И значений =0 оказалось там навалом. При импорте этот дефолт и сработал, а я то ориентировалсья на оригинал, где 0 просто нет. Просто так совпало, что в PreviewData первыми отображались немногие данные, где значение поля было именно NULL, а в гриде - 0.  smile  Отсюда и тихая паника... Самое прикольное, что и структуру и таблицы создавал я сам. Никто этот дефолт поставить просто не мог. А рядышком поле, где этот дефолт как раз нужен.  smile  Эт ж после которого литра пива я эту таблу делал???

Прошу извинить форумян за ложный аларм! 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.