| |
|||
Этот объект связывается с элементом DropDownList:
DSRoomData.Tables("Rooms").DefaultView ddlRoomID.DataBind()
Dim DBConn as OleDbConnection Dim DBCommand As OleDbDataAdapter Dim DSRoomAvailable as New DataSet Dim DBInsert As New OleDbCommand DBConn = New OleDbConnection("Provider=sqloledb;" _ & "server=localhost;" _ & "Initial Catalog=INETC10;" _ & "User Id=sa;" & "Password=yourpassword;") DBCommand = New OleDbDataAdapter _ ("Select Count(RoomReservationID) as TheCount " _ & "From RoomReservations WHERE (RoomID = " _ & ddlRoomlD.Selectedltem.Value _ & ") AND " & "('" & txtArrivalDate.text & "' BETWEEN ArrivalDate " _ & "AND DepartureDate) OR (RoomID = " _ & ddlRoomlD.Selectedltem.Value _ & ") " & "AND ('" & txtDepartureDate.text _ & "' BETWEEN ArrivalDate AND DepartureDate) " _ & "OR (RoomID = " & ddlRoomlD.Selectedltem.Value _ & ") AND " & "(ArrivalDate BETWEEN '" _ & txtArrivalDate.text & "' AND '" _ & txtDepartureDate.text &"')"_ & "OR (RoomID = " _ & ddlRoomlD.Selectedltem.Value _ & ") AND " _ & "(DepartureDate BETWEEN "' _ & txtArrivalDate.text & "' AND '" _ & txtDepartureDate.text & "')", DBConn) DBCommand.Fill(DSRoomAvailable, _ "RoomCount") If DSRoomAvailable.Tables("RoomCount"). _ Rows(0).Item("TheCount") = 0 Then DBInsert.CommandText = "Insert Into RoomReservations " _ 5 "(RoomID, ArrivalDate, DepartureDate, CustomersName, " _ 6 "PhoneNumber, EmailAddress) values (" _ & ddlRoomlD.Selectedltem.Value & ", " _ & "'" & txtArrivalDate.text & "', " _ & "'" & txtDepartureDate.text&"',"_ & "'" & txtName.text &"',"_ & "'" & txtPhoneNumber.text & "', " _ & "'" & txtEmailAddress.text & "')" DBInsert.Connection - DBConn DBInsert.Connection.Open DBInsert.ExecuteNonQuery() IblResult.Text = "Ваш заказ принят!" Else IblResult.Text = "К сожалению, номер занят в указанное время." End If pnlMakeReservation.Visible = False pnlReservationResponse.Visible = True End Sub Сначала формируется запрос для проверки того, может ли быть выполнен заказ Запрос является комплексным, потому что проверке подлежат четыре условия Ни по одному из этих параметров заказ посетителя не должен противоречить другим заказам. Первое условие: во временные рамки полученного заказа входит другой заказ. Второе условие выполняется, когда полученный заказ попадает в рамки другого заказа. Третье условие предусматривает ситуацию, когда начальная дата заказа относится к срокам уже существующего заказа. А четвертое условие выполняется тогда, когда конечная дата заказа попадает в сроки уже существующего заказа. Для поиска записей, удовлетворяющих какому-либо из этих условий, в запрос< используется оператор Or. Возвращается количество противоречащих записей:
("Select Count(RoomReservationID) as TheCount " _ & "From RoomReservations WHERE (RoomID = " _ & ddlRoomlD.Selectedltem.Value _ & ") AND " _ & "('" & txtArrivalDate.text & "' BETWEEN ArrivalDate " & "AND DepartureDate) OR (RoomID = " _ & ddlRoomlD.Selectedltem.Value _ & ") " _ & "AND ('" & trttDepartureDate.text _ & "' BETWEEN ArrivalDate AND DepartureDate) " _ & "OR (RoomID = " _ & ddlRoomlD.Selectedltem.Value _ & ") AND " _ & "(ArrivalDate BETWEEN '" _ & txtArrivalDate.text & "' AND '" _ i txtDepartureDate.text & "') " _ & "OR (RoomID = " _ & ddlRoomlD.Selectedltem.Value _ & ") AND " _ & "(DepartureDate BETWEEN '" _ & txtArrivalDate.text & "' AND "' _ & txtDepartureDate.text & "')", DBConn)
"RoomCount") |
|||