2017-06-03 69 views
-1

我正在嘗試做一個酒店預訂系統。然而,可用性讓我有點困惑。我有大約15個按鈕,我可以將數字保存到數據庫,但是當表單加載/日期更改時。我需要按鈕保持紅色並且不可點擊。例如,如果我有一個房間11從3/06/175/06/17預訂,那麼我需要按鈕從3/06/17保持紅色到4/06/17,因爲房間仍然可以在清潔後在5/06/17上預訂。我希望這是有道理的。以下是我正在使用的代碼嘗試執行此操作。該代碼確實運行,但該按鈕不會變紅。使用Access數據庫的可用性

我在想我的SQL語句是否需要改變,但我不太確定。我對編碼相當陌生,所以解釋會很有幫助。謝謝。

Private Sub ReadRecords() 
      Dim btn As Button = Nothing 
      Dim BookingFound As Boolean = False 
      Using MyConn As New OleDbConnection 
       MyConn.ConnectionString = connString 
       MyConn.Open() 
       Dim check As String = "SELECT COUNT(*) FROM [BookingInformation] WHERE [Date In] = '" & dtpDateIn.Value.Date & "' AND [Date Out] = '" & dtpDateOut.Value.Date & "'" 
       Dim BookingExists As Boolean = False 
       Dim command As OleDbCommand = New OleDbCommand(check, MyConn) 
       Using reader As OleDbDataReader = command.ExecuteReader() 
        While reader.Read() 
         If reader(0) = 0 Then 
          BookingExists = False 
         Else 
          BookingExists = True 
         End If 
        End While 
       End Using 
       If BookingExists = True Then 
        Dim getData As String = "SELECT * FROM [BookingInformation] WHERE [Date Out] = '" & dtpDateOut.Text & "'" 
        Dim command2 As OleDbCommand = New OleDbCommand(getData, MyConn) 
        Using reader As OleDbDataReader = command2.ExecuteReader() 
         While reader.Read() 
          BookingFound = True 
          strDateIn = reader("Date In").ToString() 
          strDateOut = reader("DateOut").ToString 
          strRoomNumber = reader("Room Number").ToString 
         End While 
         If BookingFound = True Then 
          btn.BackColor = Color.Red 
         End If 
        End Using 
       End If 
       MyConn.Close() 
      End Using 
     End Sub 

     Private Sub Room_Booking_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
      ReadRecords() 
     End Sub 
+1

你不也需要使用房間號在查詢中替換「?我認爲你不必管理一個房間 – Steve

+0

使按鈕enable = false禁用。 – jdweng

+0

這是學習如何使用Visual Studio內置的優秀調試器的絕佳機會。設置斷點並觀察代碼運行時發生的變量。要做的第一件事就是學習如何使用SQL參數 - 這是多年來創建SQL的正確方法。 – Plutonix

回答

0

你應該讓你的Access數據庫瞭解您輸入日期,訪問數據庫是數據類型非常敏感,例如,如果你寫

"SELECT * FROM [user_tb] WHERE user_id=1" 

您的代碼將正常工作,如果你的user_id數據類型自動編號。 所以儘量

Dim getData As String = "SELECT * FROM [BookingInformation] WHERE [Date Out] = #" & dtpDateOut.Text & "#" 

而不是

Dim getData As String = "SELECT * FROM [BookingInformation] WHERE [Date Out] = '" & dtpDateOut.Text & "'" 

即以#