2014-02-04 4 views
-1

Я смотрю, как проверять данные столбца определенной строки. Я нашел это:Проверьте, не пусто ли столбец

For Each row In tablePiglet.Rows ' - data table 
     If Not DBNull.Value.Equals(row("CurrentLocation")) Then 
      MessageBox.Show("Not Empty") 
     Else 
      MessageBox.Show("Empty") 
     End If 
    Next 

Я попытался запустить приложение, и код не выполняется. Я добавил точку останова в For Each, но это только что закончилось. Почему это? До сих пор не было данных о поле CurrentLocation, поэтому он должен отображаться пустым.

Я хочу проверить, нет ли в этой строке CurrentLocation или нет.
Что-то вроде: SELECT CurrentLocation FROM tableFoo WHERE id=1, затем проверьте, пуст ли он или нет.
Является ли код правильной вещью? Или есть другие лучшие способы?

ответ

0

попробовать это:

For Each _dtrow as DataRow In tablePiglet.Rows ' - data table 
     If _dtrow.Item("CurrentLocation").toString IsNot Nothing Or 
      _dtrow.Item("CurrentLocation").toString <> vbNullString Then 

       MessageBox.Show("Not Empty") 
     Else 
       MessageBox.Show("Empty") 

     End If 
    Next 
+0

Код на месте справа? Что-то я сделал не так? Имя поля в порядке, но все равно оно не выполняется. Точка останова не переходит в оператор 'If'. – AdorableVB

+0

Нет, это не так. .. его неполное .. вы должны назначить свой ** ROW ** как ** DATAROW **, так как он ограничен в datatable .. и ** принять к сведению ** не использовать ** ROW ** как имя переменной, потому что это может быть зарезервированное слово ... вы должны назвать его однозначно ... так что мой ответ не работает? – Unknownymous

+0

Я полностью понимаю это, к сожалению, оно не проходит через условие. – AdorableVB

0

Если вы знаете, что у вас есть только один ряд, и вы это знаете, потому что в вашем дб только одна строка может иметь определенный идентификатор, как вы указали здесь

SELECT CurrentLocation FROM tableFoo WHERE id=1 

в этом случае вам не нужно в цикле, вы знаете, это одна строка

If tablePiglet.Rows.Count > 0 Then 
    If IsDbNull(tablePiglet.Rows(0)("CurrentLocation")) Then 
     MessageBox.Show("Empty") 
    Else 
     MessageBox.Show("Not Empty") 
    End If 
End If 

это должно сделать это

Но если у вас есть много строк, хорошо, создать список

Dim l as new List(of String) 

For i as integer = 0 in tablePiglet.Rows.count-1 

If IsDbNull(tablePiglet.Rows(i)("CurrentLocation")) Then 
    l.Add(i.ToString()) 
end if 
next 

if l.Count > 0 Then MessageBox.Show("Empty rows are " & string.Join(",", l.ToArray()) 

Это будет список всех строк с пустым «CurrentLocation»

+0

Я просто использовал это заявление sql для вас, ребята, чтобы получить то, что я искал с помощью кодирования. Но в конечном итоге мне понадобится идентификатор, потому что мне нужно сравнить «some» с «CurrentLocation». Ошибка говорит: * В позиции 0 * нет строки. Это потому, что таблица данных не заполнена? Но я тестировал свой DGV и его отображаемые данные, поэтому dataTable должен был быть загружен. ** РЕДАКТИРОВАТЬ **: теперь он компилирует, тем не менее, не показывает msgBox. :/ – AdorableVB

+0

Вот почему я добавил проверку, если у вас есть строки. Когда я перечитаю ваш вопрос, я понял, что у вашей проблемы, вероятно, нет данных, потому что ваш код будет работать.Плохо, но работаю –

+0

В порядке, я добавил «Else» без строк ». Отлично. Но почему он не получает строки? На данный момент у меня три. – AdorableVB

0

возможно попробовать это .... я использовать as Datagridviewrow

For Each row As DataGridViewRow In xDataGridView.Rows 

    If row.Cells("CurrentLocation").Value Is Nothing Or row.Cells("CurrentLocation").Value Is DBNull.Value Then 
     MessageBox.Show("Not Empty") 
    Else 
     MessageBox.Show("Empty") 
    End If 
Next 

еди: мой плохой не видел это на дт

но код правильно, так что-то еще должно быть возиться с ним.

edit2: вы сказали, что для каждого закончилось сразу ... Мое предположение - пустое вы проверили на нем счет?

+0

, но это проще, но я не могу использовать DGV для этой конкретной части. Мне нужно настроить его, поэтому я не могу его связать. – AdorableVB

Смежные вопросы