Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 31.08.2015
Сообщений: 47

Не срабатывает условие проверки DataTable на пустоту

22.02.2017, 14:46. Показов 1998. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.

В VB нуб, в .NET тем более. Спросить не у кого.

Кусок кода формы:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        Dim cn As New SqlConnection
        cn.ConnectionString = "Server=bla;Database=blabla;User Id=bla;Password=bla;"
        Dim st1 As String
        st1 = "Select * from Tab1 where ID=" & Me.idd
        Dim da1 As New SqlDataAdapter(st1, cn)
        Dim ds1 As New DataSet
        da1.Fill(ds1, "Tab1")
        'With CheckedListBox1
        If Not ds1.Tables(0).Rows(0)(1) = Nothing Then
            CheckedListBox1.SetItemChecked(0, True)
        End If
 
        If Not ds1.Tables(0).Rows(0)(2) = Nothing Then
            CheckedListBox1.SetItemChecked(1, True)
        End If
 
        If Not ds1.Tables(0).Rows(0)(3) = Nothing Then
            CheckedListBox1.SetItemChecked(4, True)
        End If
 
        MsgBox(ds1.Tables(0).Rows(0)(8))
Если условия выполняются, то все хорошо и как надо. Но если нет - на том, где условие не выполняется, происходит пропуск вообще всех дальнейших инструкций. Остальные if не проверяются, msgbox не вываливается.
Я, может, не совсем понимаю принцип, но разве не должен он дальше пройти проверить остальной текст кода? Почему при невыполнении условия в if программа просто завершается, наплевав на прочие инструкции? Ошибок никаких не выдает.
Помогите, пожалуйста.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.02.2017, 14:46
Ответы с готовыми решениями:

Не полностью срабатывает условие проверки ширины элементов List (Of Label)
есть список: Rightlist = New List(Of Label) Rightlist.Add(Label2) Rightlist.Add(Label4) ...

Не срабатывает условие проверки метода
public string SearcheNumber(string n) { if (Int32.Parse(n) <= 10 && Int32.Parse(n) <= 999) { ...

Классы: булева функция проверки строки на пустоту
Всем привет! Есть класс на строки. Нужно написать булеву функцию чтобы узнать пустая ли строка. Библиотеку <string> использовать...

5
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18282 / 14205 / 5368
Регистрация: 17.03.2014
Сообщений: 28,884
Записей в блоге: 1
22.02.2017, 15:14
YoHnA, возможно запрос ничего не возвращает. Нужно сначала убедиться что в таблице есть одна строка
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
        Dim cn As New SqlConnection
        cn.ConnectionString = "Server=bla;Database=blabla;User Id=bla;Password=bla;"
        Dim st1 As String
        st1 = "Select * from Tab1 where ID=" & Me.idd
        Dim da1 As New SqlDataAdapter(st1, cn)
        Dim ds1 As New DataSet
        da1.Fill(ds1, "Tab1")
        'With CheckedListBox1
 
        If ds1.Tables(0).Rows.Count = 1 Then
            Dim firstRow As DataRow = ds1.Tables(0).Rows(0)
            If Not firstRow(1) = Nothing Then
                CheckedListBox1.SetItemChecked(0, True)
            End If
     
            If Not firstRow(2) = Nothing Then
                CheckedListBox1.SetItemChecked(1, True)
            End If
     
            If Not firstRow(3) = Nothing Then
                CheckedListBox1.SetItemChecked(4, True)
            End If
     
            MsgBox(firstRow(8))
        End If
Обрати внимание на мелкое улучшение кода путем введения переменной firstRow. Советую также заменить номера колонок на их названия - это тоже сделаеь код более понятным и надежным.
0
0 / 0 / 0
Регистрация: 31.08.2015
Сообщений: 47
22.02.2017, 16:00  [ТС]
OwenGlendower, строка есть, точно. Первое условие выполняется всегда, например, его проходит без проблем и в результирующей форме в CheckedListBox галочка стабильно стоит как надо.
Попробовала Ваш вариант, ничего не изменилось. Все так же берет строчку со следующим условием и завершает проход по коду.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18282 / 14205 / 5368
Регистрация: 17.03.2014
Сообщений: 28,884
Записей в блоге: 1
22.02.2017, 16:03
YoHnA, попробуй пройти пошагово отладчиком и посмотри что происходит. Может кол-во колонок меньше чем ты ожидаешь?
0
 Аватар для Abber
21 / 21 / 3
Регистрация: 23.12.2015
Сообщений: 51
23.02.2017, 03:31
Лучший ответ Сообщение было отмечено YoHnA как решение

Решение

YoHnA, попробуй сделать так:
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
         Try
            Dim cn As New SqlConnection
            cn.ConnectionString = "Server=bla;Database=blabla;User Id=bla;Password=bla;"
            Dim st1 As String
            st1 = "Select * from Tab1 where ID=" & Me.idd
            Dim da1 As New SqlDataAdapter(st1, cn)
            Dim ds1 As New DataSet
            da1.Fill(ds1, "Tab1")
            'With CheckedListBox1
            If Not ds1.Tables(0).Rows(0)(1) = Nothing Then
                CheckedListBox1.SetItemChecked(0, True)
            End If
 
            If Not ds1.Tables(0).Rows(0)(2) = Nothing Then
                CheckedListBox1.SetItemChecked(1, True)
            End If
 
            If Not ds1.Tables(0).Rows(0)(3) = Nothing Then
                CheckedListBox1.SetItemChecked(4, True)
            End If
 
            MsgBox(ds1.Tables(0).Rows(0)(8))
        Catch ex As Exception
            MsgBox(ex.Message & vbCrLf & vbCrLf & ex.StackTrace)
        End Try
MsgBox покажет ошибку и строку, в которой она произошла
1
0 / 0 / 0
Регистрация: 31.08.2015
Сообщений: 47
27.02.2017, 09:25  [ТС]
OwenGlendower, а как вы думаете, я определяю, в каком месте перестает проходить?) отладчиком хожу, конечно. Нет, все верно с количеством столбцов. Если все условия в If выполняются и все работает, а если нет, то вот проход заканчивается там, где оно не сошлось.

Abber, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.02.2017, 09:25
Помогаю со студенческими работами здесь

Проверка ячеек на пустоту. Условие
Всем привет! Прошу небольшой помощи. Есть условие на ячейку: если переменная не пуста, то выводится содержимое ячейки, иначе -...

Не срабатывает условие if
Проблема заключается в следующем: условие if не срабатывает, в адресной строке браузера пишеться...

Не срабатывает условие
На форме имеется stringgrid edit и кнопка. Так вот по кнопке дробавляется в stringgrid, нужно сделать что бы проверялось на дубли и...

Не срабатывает условие
Всем привет. Возникла у меня проблема. У меня в базе есть 4 типа zagon_id,user_id,zagon_type,zagon_position. И есть 9 мест для изображения....

Не срабатывает условие
Доброго времени суток. В чем проблема, почему не проверяет значения по диагонали ? Суть программы определить победителя в игре...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru