2016-01-19 1 views
0

У меня есть база данных Northwind, и когда я хочу изменить или поместить новое имя в текстовое поле, где имена кораблей есть, моя программа проверит все имена, которые уже существуют в и если это имя отсутствует, то покажите мне сообщение. Я создал новую таблицу с именами кораблей с заполнением и получением команд. Я не знаю, где моя ошибка в коде.Значение TextBox равно значению из базы данных

Private Sub ShipNameTextBox_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles ShipNameTextBox.Validating 
    For i As Integer = 0 To NorthwindDataSet.Orders1.Rows.Count - 1 
     If Not (ShipNameTextBox.Text = Convert.ToString(NorthwindDataSet.Orders1.Rows(i))) Then 
      MessageBox.Show("The boat name should be one of the list") 
      ShipNameTextBox.Focus() 
     End If 
    Next 
End Sub 
+0

Convert.ToString (NorthwindDataSet.Orders1.Rows (я) .Columns (????))) - Вы можете указать столбцы для проверки. Если вы проверите эту строку с помощью отладчика, вы можете увидеть, что код «Convert.ToString (NorthwindDataSet.Orders1.Rows (i))» возвращает тип объекта (DataRow) – bdn02

+0

Возможный дубликат [Самый простой/быстрый способ проверить, существует ли значение в DataTable в VB.net?](http://stackoverflow.com/questions/14444207/simplest-fastest-way-to-check-if-value-exists-in-datatable-in-vb-net) –

ответ

0

Вы можете использовать DataTable Select() метод, как показано ниже, который будет возвращать DataRow[] (при условии, что ваш DataTable имя столбца shipname)

DataRow[] rows = NorthwindDataSet.Orders1.Select("shipname = " + ShipNameTextBox.Text.Trim()) 

Тогда вы можете просто проверить, если возвращаемый DataRow массив имеет какой-либо строк. Если условие фильтра не соответствует их будет пустой

if(rows.Length > 0) 
{ 
    MessageBox.Show("The boat name should be one of the list") 
    ShipNameTextBox.Focus() 
} 
+0

И после это сравнить этот DataRow с моим текстовым полем? –

+0

Просто проверьте, есть ли возвращаемый 'DataRow []' какой-либо контент, а затем показ вашего meesagebox. См. Редактирование в ответ, если это помогает. – Rahul