Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
3 / 3 / 3
Регистрация: 18.11.2011
Сообщений: 286
1

Обработка "null" в MS Access "Приведение типа "|DBNull" к типу "String" является недопустимым"

06.02.2015, 10:33. Показов 2021. Ответов 7
Метки нет (Все метки)

Здравствуйте.
Работаю с базой MS Access
Вывожу в DataGridView таблицу
Проблема следующая, если у поля "классный руководитель" (тип - текстовое) значение null (т.е пустое поле) то программа вылетает с ошибкой
Приведение типа "|DBNull" к типу "String" является недопустимым
Как решить данную проблему?
Код ниже

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 Dim k As Integer
        Dim dt As New DataTable
        Dim ds As New DataSet
 
        ' Заполнение шапки таблицы:
        dt.Columns.Add("Порядковый номер")
        dt.Columns.Add("Фамилия")
        dt.Columns.Add("Имя")
        dt.Columns.Add("Отчество")
        dt.Columns.Add("Класс")
        dt.Columns.Add("Классный руководитель")
 
 
        k = 0
        Form1.MyDataSet1Users.MoveFirst()
        Do
            '' Читается запись
            k = k + 1
            dt.Rows.Add(New String() {Form1.MyDataSet1Users.Fields("Nomer").Value, _
                                      Form1.MyDataSet1Users.Fields("Imya").Value, _
                                      Form1.MyDataSet1Users.Fields("Familiya").Value, _
                                      Form1.MyDataSet1Users.Fields("Otchestvo").Value, _
                                      Form1.MyDataSet1Users.Fields("Klass").Value, _
                                      Form1.MyDataSet1Users.Fields("KlRuk").Value})
         Form1.MyDataSet1Users.MoveNext()
            If Form1.MyDataSet1Users.EOF = True Then
                Exit Do
            End If
        Loop
 
        DataGridView1.DataSource = dt   'Привязка таблицы к объекту DataGridView1
        Form1.MyDataSet1Users.MoveFirst()
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2015, 10:33
Ответы с готовыми решениями:

Поиск в DGW вылетает с ошибкой "Приведение типа "|DBNull" к типу "String" является недопустимым."
В общем такой вопрос. Код рабочий. Только у меня не работает. For i = 0 To...

"Приведение типа "|DataRowView" к типу "String" является недопустимым"
Пытаюсь вытащить из базы данных и связать фамилии студентов, их суммы и даты оплаты обучения. Все...

"Приведение типа "|DBNull" к типу "String" при попытке загрузить данные из ячейки DataGridView в ComboBox
Доброго времени суток! Сама ошибка "Приведение типа "|DBNull" к типу "String" является...

Ошибка "Приведение строки "explorer.exe" к типу "Double" является недопустимым" при записи в реестр
Помогите, хочу получить доступ к winlogon, что бы изменять любое другое значение shell на...

7
638 / 592 / 90
Регистрация: 19.03.2012
Сообщений: 1,124
06.02.2015, 18:31 2
Смотрите в сторону класса DBNull и проверяйте наличие несуществующего значения. Думаю, что разберётесь.
0
3 / 3 / 3
Регистрация: 18.11.2011
Сообщений: 286
07.02.2015, 22:29  [ТС] 3
Прочитал вроде но не совсем понял
через
VB.NET
1
 If Form1.MyDataSet1Users.Fields("KlRuk").Value = DBNull then
..
Не выходит
0
1992 / 1163 / 444
Регистрация: 20.12.2014
Сообщений: 3,088
07.02.2015, 23:09 4
Цитата Сообщение от Nooby93 Посмотреть сообщение
Как решить данную проблему?
Может просто в БД в поле "Кл.рук" определить значение по умолчанию: "нет" или "-"?

Добавлено через 15 минут
Или так попробовать:
VB.NET
1
If CStr(Form1.MyDataSet1Users.Fields("KlRuk").Value) = "" then
0
3 / 3 / 3
Регистрация: 18.11.2011
Сообщений: 286
07.02.2015, 23:18  [ТС] 5
Я бы тоже так сделал, но по условию моего задания поле должно либо быть пустым либо содержать фамилию класс.руководителя.

Добавлено через 7 минут
VB.NET
1
If CStr(Form1.MyDataSet1Users.Fields("KlRuk").Value) = "" then
Именно на поле классный руководитель почему-то вылетает с этой ошибкой
А если поле фамилия не заполнено, то отображает "информации нет".
В чем причина не понял.
0
1992 / 1163 / 444
Регистрация: 20.12.2014
Сообщений: 3,088
07.02.2015, 23:26 6
Цитата Сообщение от Nooby93 Посмотреть сообщение
поле должно либо быть пустым
Быть пустым или выглядеть пустым? . Если выглядеть, то по умолчанию в БД поставьте: " ".
Еще вариант: при занесении значений в dt прибавьте к значению поля Кл.рук. &" ".
Третий вариант - посмотрите MSDN. Там вроде неплохой пример приведен.
https://msdn.microsoft.com/ru-... -snippet-2
0
69 / 67 / 5
Регистрация: 22.12.2011
Сообщений: 261
Записей в блоге: 2
08.02.2015, 20:28 7
используйте .ToString
если будет null строка выйдет пустой
0
26 / 18 / 8
Регистрация: 25.01.2015
Сообщений: 48
09.02.2015, 14:18 8
Лучший ответ Сообщение было отмечено Nooby93 как решение

Решение

Visual Basic
1
If IsDBNull(Form1.MyDataSet1Users.Fields("KlRuk").Value) then
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.02.2015, 14:18

Ошибка при запуске .exe файла из debug: "Приведение строки "Июнь" к типу "Double" является недопустимым"
Если запускать из самого проекта(F5), то все нормально, а если скомпилированный запустить, то...

Как исправить ошибку "Приведение строки "" к типу "Double" является недопустимым"?
Выдает ошибку в строке nasel(n).mat = Int(line(2)). Приведение строки "" к типу "Double" является...

Приведение строки "" к типу "Integer" является недопустимым при работе с InputBox
Работаю в Visual Studio 2008. Строка a(i) = InputBox(" Введите " & i & " Элемент ") выдает ошибку:...

Приведение строки "(" к типу "Double" является недопустимым
Приведение строки "(" к типу "Double" является недопустимым. Показывает на строку ,где...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.