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

Поиск в DGW вылетает с ошибкой "Приведение типа "|DBNull" к типу "String" является недопустимым."

12.12.2011, 17:15. Показов 5560. Ответов 10
Метки нет (Все метки)

В общем такой вопрос. Код рабочий. Только у меня не работает.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
       For i = 0 To ВрачиDataGridView.ColumnCount - 1
            For j = 0 To ВрачиDataGridView.RowCount - 1
                ВрачиDataGridView.Item(i, j).Style.BackColor = Color.White
                ВрачиDataGridView.Item(i, j).Style.ForeColor = Color.Black
            Next j
        Next i
 
        For i = 0 To ВрачиDataGridView.ColumnCount - 1
            For j = 0 To ВрачиDataGridView.RowCount - 1
                If InStr(ВрачиDataGridView.Item(i, j).Value, TextBox2.Text) Then
                    ВрачиDataGridView.Item(i, j).Style.BackColor = Color.AliceBlue
                    ВрачиDataGridView.Item(i, j).Style.ForeColor = Color.Blue
                End If
            Next j
        Next i
Выдает ошибку "Приведение типа "|DBNull" к типу "String" является недопустимым."

В чем проблема?
0

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

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2011, 17:15
Ответы с готовыми решениями:

Обработка "null" в MS Access "Приведение типа "|DBNull" к типу "String" является недопустимым"
Здравствуйте. Работаю с базой MS Access Вывожу в DataGridView таблицу Проблема следующая, если у...

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

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

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

10
748 / 547 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
12.12.2011, 17:36 2
VB.NET
1
ВрачиDataGridView.Item(i, j).Value.ToString
0
36 / 36 / 3
Регистрация: 26.09.2009
Сообщений: 298
12.12.2011, 17:45  [ТС] 3
gitarillo, Ссылка на объект не указывает на экземпляр объекта.

И ещё попутно вопрос, добавил на форму picturebox чтобы по нажатию в таблице на строку выводило фотографию.
Вот код
VB.NET
1
2
3
4
5
6
7
8
9
 Private Sub ВрачиDataGridView_CellMouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles ВрачиDataGridView.CellMouseClick
        If (e.ColumnIndex = 7) Then
            OpenFileDialog1.Filter = "Image|*.jpg"
            If OpenFileDialog1.ShowDialog() Then
                ВрачиDataGridView.Item(e.ColumnIndex, e.RowIndex).Value = OpenFileDialog1.FileName
            End If
        End If
        PictureBox1.Image = System.Drawing.Image.FromFile(ВрачиDataGridView.Item(7, e.RowIndex).Value)
    End Sub
ну вот ошибка:
Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Имя параметра: index
0
193 / 186 / 14
Регистрация: 09.02.2011
Сообщений: 457
12.12.2011, 23:32 4
VB.NET
1
2
3
4
If (not ВрачиDataGridView.Item(i, j).Value is dbnull.value) and (InStr(ВрачиDataGridView.Item(i, j).Value, TextBox2.Text)) Then
                    ВрачиDataGridView.Item(i, j).Style.BackColor = Color.AliceBlue
                    ВрачиDataGridView.Item(i, j).Style.ForeColor = Color.Blue
                End If
По последнему вроде не должно быть ошибок, может в другой части кода?
0
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
14.11.2013, 11:29 5
Почему-то у меня не ищет по гриду, пишет "Приведение типа "|DBNull" к типу "String" является недопустимым"
хотя также делаю:
VB.NET
1
2
3
4
5
6
7
8
        For i = 0 To DataGridView1.ColumnCount - 1
            For j = 0 To DataGridView1.RowCount - 1
                If (Not DataGridView1.Item(i, j).Value Is DBNull.Value) And (InStr(DataGridView1.Item(i, j).Value, TextBox3.Text)) Then
                    DataGridView1.Item(i, j).Style.BackColor = Color.AliceBlue
                    DataGridView1.Item(i, j).Style.ForeColor = Color.Blue
                End If
            Next
        Next
0
829 / 637 / 100
Регистрация: 20.08.2013
Сообщений: 2,524
14.11.2013, 18:32 6
Цитата Сообщение от Egor2014 Посмотреть сообщение
(Not DataGridView1.Item(i, j).Value Is DBNull.Value)
Эм.. Может, надо один из следующих вариантов:
VB.NET
1
2
3
4
DataGridView1.Item(i, j).Value IsNot DBNull.Value
DataGridView1.Item(i, j).Value <> DBNull.Value
TypeOf DataGridView1.Item(i, j).Value Is String
TypeOf DataGridView1.Item(i, j).Value IsNot DBNull
А вообще, по-моему, лучше сделать как-то так:
Visual Basic
1
2
Dim Str As String = TryCast(DataGridView1.Item(i, j).Value, String) ' Nothing если был DBNull
Dim Str As String = If(TryCast(DataGridView1.Item(i, j).Value, String), "") ' "" если был DBNull
1
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
14.11.2013, 18:38 7
Я пока сделал код ниже, обкатаю своё, если что ваше попробую:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
' поиск в гриде значения
        Dim a As Boolean = False
        Dim str_find As String = TextBox1.Text
        For i = 0 To DataGridView1.ColumnCount - 1
            For j = 0 To DataGridView1.RowCount - 1
                If (DataGridView1.Item(i, j).Value.ToString().ToLower.Contains(str_find.ToLower)) Then
                    DataGridView1.CurrentCell = DataGridView1.Item(i, j)
                    '  DataGridView1.Rows(i).Selected = True
                    a = True
                End If
            Next
        Next
        If a = False Then
            MsgBox("Материал " & str_find & " не найден", 32, "Поиск")
        End If
0
829 / 637 / 100
Регистрация: 20.08.2013
Сообщений: 2,524
14.11.2013, 18:44 8
Цитата Сообщение от Egor2014 Посмотреть сообщение
DataGridView1.Item(i, j).Value.ToString().ToLower.Contains(str_find.ToLower)
Мда
0
0 / 0 / 0
Регистрация: 22.05.2017
Сообщений: 32
29.05.2017, 21:32 9
Сейчас тоже с такой байдой столкнулся. Это что-то с базой. В коде всё нормально. Создал новую базу, сделал таблицу, ну и всё работает с ней. Но вот только не понятно что с базой не так.
0
12 / 12 / 2
Регистрация: 24.02.2013
Сообщений: 41
29.05.2017, 21:53 10
Not Null при создании полей таблицы использовали?
0
116 / 109 / 31
Регистрация: 05.04.2014
Сообщений: 224
30.05.2017, 11:22 11
Добавь проверку на пустое значение.
VB.NET
1
If (Not IsDBNull(DataGridView1.Item(i, j).Value))
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.05.2017, 11:22

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

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

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

Приведение строки "0,00 р." к типу "Double" является недопустимым
при сборке проекта выводится ошибка: Приведение строки &quot;0,00 р.&quot; к типу &quot;Double&quot; является...


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

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

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