2017-12-16 4 views
0

オンラインで予約している部屋に問題があります。C#予約可能な部屋確認可能

は、私は3つのテーブル以下のようにしました:

Room

enter image description here

BookingHeader

enter image description here

BookingItem

enter image description here

このコードに問題があります。それは誤りではありませんが、部屋は他の予約のために予約できません。部屋はbooking_idで予約されており、日付は返されません。

for (int countt = 1; countt <= totalcc; countt++) 
{ 
    DataTable dtRoom = new DataTable(); 
    string Sql = ("SELECT TOP 1 rooms.Room_ID FROM TB_MAS_Room rooms 
WHERE rooms.Room_ID NOT IN(SELECT t1.Room_ID FROM TB_TRA_BookingItem t1 
INNER JOIN TB_TRA_BookingItem t2 ON t1.Room_ID = t2.Room_ID 
INNER JOIN TB_TRA_BookingHeader t3 ON t2.Booking_ID = t3.Booking_ID 
WHERE not ([DateOut] < t3.DateIn or [DateIn] > t3.DateOut))");//new 
    SqlCommand sqlCom = new SqlCommand(Sql,con); 
    con.Open(); 
    SqlDataAdapter da = new SqlDataAdapter(sqlCom); 
    da.Fill(dtRoom); 
    if(dtRoom.Rows.Count>0) 
    { 
     SqlCommand sc = new SqlCommand("INSERT INTO TB_TRA_BookingItem 
([Booking_ID],[BookingItemID],[Room_ID]) 
VALUES('"+ id +"','"+ countt +"','"+ dtRoom.Rows[0]["Room_ID"].ToString() +"')",con); 
     sc.ExecuteNonQuery(); 
    } 
    else 
    { 
     //if room not avialable 
    } 
    con.Close(); 
} 

どうすればいいですか?

私のコードでは分からないことを説明してください。

あなたは「予約された」または1-0 するには、その部屋の状況を更新されない理由は、テーブルルーム
RoomStatusビットに列を追加する必要があります

答えて

0

し、新しい予約更新にこの行を挿入あなたが部屋を確認することができるだろう、これを行った後、簡単なクエリ 更新テーブル名を設定しRoomStatus = 1 Room_ID = Get_Room_ID_FromBooking

が予約されたかどうか

されることにより、
関連する問題