2017-09-10 16 views
0

私はホテル予約システムを作っています。私は各部屋を代表する15のボタンを持っています。日付が選択されると、部屋が予約されている場合は、その番号の付いたボタンを赤色にする必要があり、選択することはできません。しかし、私はまた、日付と日付の中間に赤のボタンが必要です。ホテル予約システム(利用可能な部屋、(ボタン))

これはこれまでのコードです。私はどこから始めたらいいのか分からない。

Dim date1 As DateTime = dtpDateIn.Value.Date 
    Dim date2 As DateTime = dtpDateOut.Value.Date 
    Dim da As OleDbDataAdapter = New OleDbDataAdapter 
    Dim BookingFound As String = False 
    MyConn = New OleDbConnection 

    MyConn.ConnectionString = connString 

    MyConn.Open() 

    str1 = ("Select * from BookingInformation where [Date In] >= '" & date1 & "' AND [Date Out] <= '" & date2 & "'") 

    '("SELECT * FROM [BookingInformation] WHERE [Date In] = #" & dtpDateIn.Value.Date & "#") 

    Dim cmd1 As OleDbCommand = New OleDbCommand(str1, MyConn) 
    dr = cmd1.ExecuteReader 

    While dr.Read() 
     BookingFound = True 

     strDateOut = dr("Date Out").ToString 
     strDateIn = dr("Date In").ToString 
     strRoomNumber = dr("Room Number").ToString 

     CmbRooms.Items.Remove(strRoomNumber) 
    End While 
    MyConn.Close() 
End Sub 
+0

ようになるはずのコードがありますコード? – Subaz

+0

日付が日付入力と日付出力の間にある場合は、> = Date-inおよび<= Date-outであり、SQLを適切に変更できます。それは役に立ちますか? – peterG

+0

これはこれまで私が持っていたものです。私はコンボボックスでそれをテストして部屋番号が見つかるかどうかを確認していますが、まだ動作していません。上記のコードを編集しました。 – Matthew

答えて

0

まず、すべての部屋ボタンをリストにまとめて部屋番号順に並べ替えると、少し楽になります。理想的には、ボタン名はbtnRoom01のようになります。任意の1桁の数字がゼロで始まることを確認したら、私のサンプルで使用された順序付けの方法が機能します。そうでない場合は、要件に合わせて書き直す必要があります。

フォーム全体のリストを作成する -

Dim roomButtons As New List(Of Button) 

ここでボタン

Private Sub AddButtonsToCollection() 
    roomButtons.Clear() 
    For Each ctl As Control In Me.Controls 
     Dim btn As Button 
     If ctl.GetType = GetType(Button) Then 
      btn = CType(ctl, Button) 
      If btn.Name.Contains("btnRoom") Then 
       roomButtons.Add(btn) 
       roomButtons = roomButtons.OrderBy(Function(x) x.Name).ToList 
      End If 
     End If 
    Next 
End Sub 

を収集し、あなたのwhileループがあなたと間違って何この

While dr.Read() 
    Dim bookingDateIn, bookingDateOut As Date 
    BookingFound = True 
    Date.TryParse(dr("Date Out").ToString, bookingDateIn) 
    Date.TryParse(dr("Date In").ToString, bookingDateIn) 
    Dim RoomNumber As Integer = CInt(dr("Room Number").ToString) 
    If (bookingDateIn <= date2) And (bookingDateOut >= date1) Then 
     roomButtons(RoomNumber - 1).BackColor = Color.Red 
     roomButtons(RoomNumber - 1).Text = RoomNumber.ToString & vbCrLf & bookingDateIn.ToShortDateString & vbCrLf & bookingDateOut.ToShortDateString 
    End If 
End While 
関連する問題