2016-03-25 3 views
0

Я пытаюсь написать запрос LINQ, который сравнивает целочисленное значение в базе данных с целочисленной переменной. Это не работает. Я могу сравнить текстовые значения, но сравнение целых чисел возвращает нуль.LINQ Query in VB.net Сравнение целых чисел

 Private Sub txtRoomNum_TextChanged(sender As Object, e As EventArgs) Handles txtRoomNum.TextChanged 
    If Val(txtRoomNum.Text) > 99 Then 
     Dim intRoomNum As Integer 

     intRoomNum = Val(txtRoomNum.Text) 
     Dim RoomData = (From Rooms In BadermanIslandDataSet.Rooms 
         Where Rooms.HotelID = intHotelID).SingleOrDefault 
     ''Where Rooms.HotelID = intHotelID And Rooms.RoomNumber = intRoomNum 
     Try 
      txtTest.Text = RoomData.RoomID 
     Catch ex As Exception 
      txtTest.Text = "null" 
     End Try 
    End If 


End Sub 
+2

Включить опцию Строгий. 'intRoomNum = Val (txtRoomNum.Text)' назначает двойное целое число – Plutonix

+0

Моя проблема в самом запросе. В текущей форме это сравнение Rooms.HotelID с intHotelID. Это дает мне значение Null. Я попытался ввести число прямо, и он все еще не работает. – Stephanie

+0

Включите опцию Strict, и вы обнаружите больше проблем – Plutonix

ответ

0

Изменить txtTest.Text = RoomData.RoomID

в Convert.ToInt32(txtTest.Text) = RoomData.RoomID)

Вы сравнивали string и integer перед тем

0

Поскольку это пользовательский ввод, я хотел бы попробовать использовать Integer.TryParse при получении значения из текстового поля. Это предотвратит создание исключений, и в случае сбоя анализа вы можете попросить своего пользователя использовать только номер в этом поле.

If Integer.TryParse(txtRoomNum.Text, intRoomNum) Then 
    ...your logic 
Else 
    ...something to let them know to only put a number in txtRoomNum.Text 
End If 
0

Хорошо, я нашел проблему. Мне нужна была функция RoomBindingSource в форме. Как только это было добавлено, он работал как чемпион.

+0

Ну, это sort'a работает. Если я ищу номер в отеле 1, он работает, иначе это не так. Текущий код выглядит следующим образом ... – Stephanie

+0

Dim intRoomNum As Integer Если Int32.TryParse (txtRoomNum.Text, intRoomNum) Тогда Если intRoomNum> 99 Тогда Попробуйте Dim RoomInfo = (Из номеров в BadermanIslandDataSet.Rooms Где Rooms.HotelID = intHotelID И Rooms.RoomNumber = intRoomNum Выберите Rooms.RoomID) intRoomID = RoomInfo.First Поймайте бывший в качестве исключения End Попробуйте txtTest.Text = intRoomID End If Else End If – Stephanie

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