2016-03-25 10 views
0

データベースの整数値と整数変数を比較するLINQクエリを作成しようとしています。これは動作していません。テキスト値を比較できますが、整数を比較するとnullが返されます。それは私がテキストフィールドから値を取得するときInteger.TryParseを使用しようと、ユーザの入力がありますのでLINQ 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)'はDoubleに整数を代入しています – Plutonix

+0

私は問題がクエリ自体にあります。現在のフォームは、Rooms.HotelIDとintHotelIDを比較しています。これは私にNull値を与えています。私は直接番号を入れてみましたが、まだ動作しません。 – Stephanie

+0

オプションを厳密にオンにすると、より多くのトラブルを発見します – Plutonix

答えて

0

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

に変更txtTest.Text = RoomData.RoomID

あなたは

0

stringintegerを比較しました。これにより、例外が発生するのを防ぐことができます。解析が失敗した場合は、そのフィールドに数字だけを使用するようにユーザーに依頼することができます。

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

[OK]をクリックします。フォーム上にRoomsBindingSourceが必要でした。それが追加されると、それはチャンピオンのように働いた。

+0

まあ、それは動作します。私がホテル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例外 エンドとしてエルス エンド場合場合 txtTest.Text = intRoomID 終了してみてください – Stephanie