2016-03-25 92 views
0

我想寫一個LINQ查詢比較數據庫中的整數值與整數變量。這不起作用。我可以比較文本值,但比較整數返回null。在VB.net比較整數LINQ查詢

 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)'將一個Double賦值給一個整數 – Plutonix

+0

我的問題在於查詢本身。它的當前形式是將Rooms.HotelID與intHotelID進行比較。這給了我一個空值。我嘗試過直接輸入數字,但仍然無效。 – Stephanie

+0

打開選項嚴格,你會發現更多的麻煩 – Plutonix

回答

0

變化txtTest.Text = RoomData.RoomID

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

以前您一直

0

比較stringinteger由於它是用戶輸入我會嘗試得到從文本字段中的值時使用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

好吧,我找到了問題。我需要一個窗體上的一個RoomsBindingSource。一旦添加它就像一個冠軍。

+0

嗯,它sort'a作品。如果我正在尋找酒店1的房間,那麼它有效,否則它不會。當前的代碼看起來像這樣... – Stephanie

+0

昏暗intRoomNum作爲整數 如果Int32.TryParse(txtRoomNum.Text,intRoomNum)然後 如果intRoomNum> 99,那麼 嘗試 昏暗RoomInfo =(從客房BadermanIslandDataSet.Rooms 其中Rooms.HotelID = intHotelID而Rooms.RoomNumber = intRoomNum 選擇Rooms.RoomID) intRoomID = RoomInfo.First 抓住EX作爲例外 結束Try txtTest.Text = intRoomID 結束如果 否則 結束如果 – Stephanie