Ich versuche, ein Hotelbuchungssystem zu machen. Die Verfügbarkeit hat mich jedoch etwas verwirrt. Ich habe ungefähr 15 Knöpfe, die ich in der Lage bin, die Zahl in der Datenbank zu speichern, aber wenn das Formular geladen/Datum geändert hat. Ich brauche den Knopf, um rot zu bleiben und nicht zu klicken. Zum Beispiel, wenn ich ein Zimmer 11 von 3/06/17
bis 5/06/17
gebucht hätte, dann müsste ich die Taste rot von 3/06/17
bis 4/06/17
bleiben, da das Zimmer nach der Reinigung noch auf der 5/06/17
gebucht werden kann. Ich hoffe das macht Sinn. Unten ist der Code, den ich verwende, um dies zu tun. Der Code läuft, aber der Button wird nicht rot.Verfügbarkeit mit Access-Datenbank
Ich dachte, muss meine SQL-Anweisung geändert werden, aber ich bin mir nicht sicher. Ich bin ziemlich neu im Codieren, also wäre eine Erklärung hilfreich. Vielen Dank.
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
Haben Sie auch ein Zimmernummer nicht brauchen in Ihrer Anfragen zu benutzen? Ich glaube nicht, dass Sie nur einen Raum verwalten müssen – Steve
Machen Sie die Schaltfläche aktivieren = false, um zu deaktivieren. – jdweng
Dies ist eine großartige Gelegenheit, um zu lernen, wie man den großen in Visual Studio eingebauten Debugger benutzt. Legen Sie einen Haltepunkt fest und beobachten Sie, was mit Variablen passiert, wenn der Code ausgeführt wird. Das erste, was zu tun ist, zu lernen, wie man SQL-Parameter verwendet - das war nicht der richtige Weg, um SQL für mehrere Jahre zu erstellen. – Plutonix