Сделай Сам Свою Работу на 5

Скриншоты запуска программы из .ехе файла.





 

 

 

 

 

 

Код основной формы (frmReservation):

Option Explicit

Private WithEvents Res As CReservation

Private strOperationStatus

 

Private Sub cmdDone_Click()

Dim ctl As Control

 

For Each ctl In Controls

If TypeOf ctl Is TextBox Then

If ctl.Text = "" Then

MsgBox "Все поля должны быть заполнены."

Exit Sub

End If

ElseIf TypeOf ctl Is MaskEdBox Then

If ctl.ClipText = "" Then

MsgBox "Все поля должны быть заполнены."

Exit Sub

End If

ElseIf TypeOf ctl Is OptionButton Then

If ctl.Value = "" Then

MsgBox "Требуется указать тип платежа."

Exit Sub

End If

End If

Next ctl

DisableControls

If grpPmtType(0).Value Then

Res.rsReservation![PaymentType] = "CREDIT CARD"

ElseIf grpPmtType(1).Value Then

Res.rsReservation![PaymentType] = "CHECK"

ElseIf grpPmtType(2).Value Then

Res.rsReservation![PaymentType] = "CASH"

End If

Res.rsReservation![CheckInDate] = mskCheckIn.Text

Res.rsReservation.Update

End Sub

 

Private Sub cmdMoveFirst_Click()

Res.rsReservation.MoveFirst

FillControls

End Sub

 

Private Sub cmdMoveLast_Click()

Res.rsReservation.MoveLast

FillControls

End Sub

 

Private Sub cmdMoveNext_Click()

With Res.rsReservation

.MoveNext

'чтобы не выйти за границы набора

If .EOF Then

.MoveFirst

End If

End With

FillControls

End Sub

 

Private Sub cmdMovePrevious_Click()

With Res.rsReservation

.MovePrevious

'чтобы не выйти за границы набора

If .BOF Then

.MoveLast

End If

End With

FillControls

End Sub

 

Private Sub Form_Load()

Set Res = New CReservation



DisableControls

Set txtFirstName.DataSource = Res

txtFirstName.DataField = "FirstName"

Set txtLastName.DataSource = Res

txtLastName.DataField = "LastName"

Set txtAddress.DataSource = Res

txtAddress.DataField = "Address"

Set txtPhone.DataSource = Res

txtPhone.DataField = "Phone"

Set txtNumPeople.DataSource = Res

txtNumPeople.DataField = "NumberOfPeople"

Set txtNumDays.DataSource = Res

txtNumDays.DataField = "NumberOfDays"

Set txtRoomNumber.DataSource = Res

txtRoomNumber.DataField = "RoomNumber"

Set txtRate.DataSource = Res

txtRate.DataField = "Rate"

FillControls

txtFirstName.ToolTipText = "Введите имя гостя."

txtLastName.ToolTipText = "Введите фамилию гостя."

txtAddress.ToolTipText = "Введите адрес."

txtPhone.ToolTipText = "Введите номер телефона."

End Sub

 

Private Sub FillControls()

'объект Recordset используется для заполнения дополнительных полей

mskCheckIn.Text = Format(Res.rsReservation![CheckInDate], "mm-dd-yyyy")

txtCheckOut.Text = Format(DateAdd("d", Val(txtNumDays.Text), mskCheckIn.Text), "mm-dd-yyyy")

Select Case Res.rsReservation![PaymentType]

Case "CREDIT CARD"

grpPmtType(0).Value = True

Case "CHECK"

grpPmtType(1).Value = True

Case "CASH"

grpPmtType(2).Value = True

End Select

End Sub

 

Private Sub grpPmtType_Click(Index As Integer)

Select Case Index

Case 0 'Credit card

staAdditionallnfo.Panels("addinfo").Text = _

"Принимаются Visa, Master Card или American Express."



Case 1 'Check

staAdditionallnfo.Panels("addinfo").Text = _

"Фотография идентификационной карты и проверка гарантийного талона необходимы."

 

Case 2 'Cash

staAdditionallnfo.Panels("addinfo").Text = _

"В отелях не всегда есть мелкая сдача."

 

End Select

End Sub

 

Private Sub mnuFileExit_Click()

Unload Me

End Sub

 

Private Sub EnableControls()

Dim ctl As Control

For Each ctl In Controls

ctl.Enabled = True

If TypeOf ctl Is TextBox Or TypeOf ctl Is MaskEdBox _

Then ctl.BackColor = "&H80000005"

Next ctl

mnuGuestReservationCheckIn.Enabled = True

mnuGuestReservationCheckOut.Enabled = True

mnuGuestReservationCancel.Enabled = True

End Sub

 

Private Sub DisableControls()

Dim ctl As Control

For Each ctl In Controls

' меню и метки оставляем включенными

If TypeOf ctl Is Menu Or TypeOf ctl Is Label Then

ctl.Enabled = True

Else

ctl.Enabled = False

End If

If TypeOf ctl Is TextBox Or TypeOf ctl Is MaskEdBox _

Then ctl.BackColor = "&H8000000F" ' устанавливаем серый фон

Next ctl

mnuGuestReservationCheckIn.Enabled = False

mnuGuestReservationCheckOut.Enabled = False

mnuGuestReservationCancel.Enabled = False

cmdMoveFirst.Enabled = True

cmdMovePrevious.Enabled = True

cmdMoveNext.Enabled = True

cmdMoveLast.Enabled = True

End Sub

 

Private Sub mnuGuestEdit_Click()

'включаем элементы управления

EnableControls

End Sub

 

Private Sub mnuGuestReservationAdd_Click()

Dim ctl As Control

Res.AddReservation

EnableControls

'очищаем поля

For Each ctl In frmReservation.Controls

If TypeOf ctl Is TextBox Then

ctl.Text = ""

ElseIf TypeOf ctl Is MaskEdBox Then

ctl.Text = "__-__-____"

ElseIf TypeOf ctl Is OptionButton Then

ctl.Value = False

End If

Next

txtFirstName.SetFocus

staAdditionallnfo.Panels("addinfo").Text = _

"Для добавления данных нажмите готово."

End Sub

 

Private Sub mnuGuestReservationCancel_Click()

Res.CancelReservation

End Sub

 

Private Sub mnuGuestReservationCheckIn_Click()

Dim blnCheckInResult As Boolean

blnCheckInResult = Res.CheckIn()

If blnCheckInResult Then

MsgBox "Гость успешно зарегестрирован."

Else

MsgBox "Не удалось добавить гостя. Статус- " & _

Res.rsReservation![Status]

End If

End Sub

 



Private Sub mnuGuestReservationCheckout_Click()

Res.CheckOut

End Sub

 

Private Sub txtAddress_KeyPress(KeyAscii As Integer)

KeyAscii = Asc(UCase(Chr(KeyAscii)))

End Sub

 

Private Sub txtAddress_Change()

If txtAddress = "C-72AKKVLS" Then

MsgBox "Данную лабораторную работу выполнили студенты группы С-72" & _

Chr(13) & "Александрова Ольга" & Chr(13) & "Казаков Александр" & _

Chr(13) & "Кириллов Ярослав" & Chr(13) _

& "Копирование материала не рекомендуется, если не удалите это сообщение:)", _

vbOKOnly, "Авторы"

txtAddress = ""

End If

End Sub

 

Private Sub txtLastName_KeyPress(KeyAscii As Integer)

KeyAscii = Asc(UCase(Chr(KeyAscii)))

End Sub

 

Private Sub mnuHelpAbout_Click()

MsgBox "Лабораторную работу выполнили студенты группы С-72" & _

Chr(13) & "Александрова Ольга" & Chr(13) & "Казаков Александр" & _

Chr(13) & "Кириллов Ярослав", vbOKOnly, "Авторы"

End Sub

 

Private Sub mnuReportsInvoice_Click()

Static xl As Excel.Application

Set xl = New Excel.Application

With xl

.Visible = True

.Workbooks.Add

With .Range("A1")

.Value = "Chateau St. Mark Invoice"

.Font.Bold = True

.Font.Name = "Times New Roman"

.Font.Size = 26

End With

.Range("A4").Value = "Name:"

.Range("B4").Value = txtFirstName.Text & " " & txtLastName.Text

With .Range("A5")

.Value = "Address"

.VerticalAlignment = xlTop

End With

With .Range("B5")

.Value = txtAddress.Text

.ColumnWidth = 20

.WrapText = True

End With

.Range("A6").Value = "Number of Days:"

.Range("B6").Value = txtNumDays.Text

.Range("A7").Value = "Rate:"

.Range("B7").Value = txtRate.Text

.Range("A8").Value = "Total Due:"

'вычисляем сумму платежа

.Range("B8").Value = Format(CSng(txtNumDays.Text) * CSng(txtRate.Text), "Currency")

End With

Columns("A:A").ColumnWidth = 25

xl.ActiveWorkbook.PrintPreview

End Sub

 

Private Sub mnuReportsReminder_Click()

Static wd As Word.Application

Static wdDoc As Word.Document

Dim strPmtType As String

'создаем новый экземпляр Microsoft Word

Set wd = New Word.Application

'выводим на экран окно нового экземпляра Microsoft Word

wd.Visible = True

'открываем шаблон Chateau dot

Set wdDoc = wd.Documents.Add("C:\Labs\Chateau.dot")

'определяем вид платежа

If grpPmtType(0).Value = True Then

strPmtType = "Credit Card"

ElseIf grpPmtType(1).Value Then

strPmtType = "Check"

Else

strPmtType = "Cash"

End If

'заполняем поля шаблона значениями, полученными от формы

With wdDoc

.FormFields("wdFirstName").Range = txtFirstName.Text

.FormFields("wdCheckIn").Range = mskCheckIn.Text

.FormFields("wdNumOfDays").Range = txtNumDays.Text

.FormFields("wdPmtType").Range = strPmtType

.FormFields("wdCalcTotal").Range = Format(CSng(txtNumDays.Text) * CSng(txtRate.Text), "Currency")

.FormFields("wdCheckOut").Range = txtCheckOut.Text

End With

'выводим документ в режиме предварительного просмотра

wdDoc.PrintPreview

End Sub

 

Private Sub txtFirstName_KeyPress(KeyAscii As Integer)

KeyAscii = Asc(UCase(Chr(KeyAscii)))

End Sub

 

Private Sub txtPhone_KeyPress(KeyAscii As Integer)

'если символ допустим, выходим из процедуры

If Chr(KeyAscii) = vbBack Or Chr(KeyAscii) = "-" Or Chr(KeyAscii) = "(" _

Or Chr(KeyAscii) = ")" Then Exit Sub

'проверка на буквенные символы

If Not IsNumeric(Chr(KeyAscii)) Then

Beep

KeyAscii = 0

staAdditionallnfo.Panels("addinfo").Text = "Номер телефона должен быть числовым."

End If

End Sub

 

Private Sub txtNumPeople_KeyPress(KeyAscii As Integer)

'разрешаем использование клавиши Backspace

If Chr(KeyAscii) = vbBack Then Exit Sub

If Not IsNumeric(Chr(KeyAscii)) Then

Beep

KeyAscii = 0

staAdditionallnfo.Panels("addinfo").Text = "Значение должно быть числовым."

End If

End Sub

 

Private Sub txtNumDays_KeyPress(KeyAscii As Integer)

'разрешаем использование клавиши Backspace

If Chr(KeyAscii) = vbBack Then Exit Sub

If Not IsNumeric(Chr(KeyAscii)) Then

Beep

KeyAscii = 0

staAdditionallnfo.Panels("addinfo").Text = "Значение должно быть числовым."

End If

End Sub

 

Private Sub txtRate_KeyPress(KeyAscii As Integer)

'разрешаем использование клавиши Backspace

If Chr(KeyAscii) = vbBack Then Exit Sub

If Not IsNumeric(Chr(KeyAscii)) Then

Beep

KeyAscii = 0

staAdditionallnfo.Panels("addinfo").Text = "Значение должно быть числовым."

End If

End Sub

 

Private Sub mskCheckIn_Validate(Cancel As Boolean)

If Not IsDate(mskCheckIn.Text) Then

staAdditionallnfo.Panels("addinfo").Text = _

"Не верный формат даты (прим. '07-23-2000')"

Cancel = True

End If

End Sub

 

Private Sub txtNumDays_LostFocus()

If mskCheckIn.ClipText <> "" And txtNumDays.Text <> "" Then

txtCheckOut.Text = Format(DateAdd("d", Val(txtNumDays.Text), mskCheckIn.Text), "mm-dd-yyyy")

End If

End Sub

 

Private Sub mnuCustSearch_Click()

Dim strCriteria As String

frmSearch.Show vbModal

'ведем поиск по содержимому любого из трех полей

If Trim(frmSearch!txtLastName.Text) <> "" Then

strCriteria = "[LastName] LIKE '" & frmSearch!txtLastName.Text & "%'"

ElseIf Trim(frmSearch!txtPhone.Text) <> "" Then

strCriteria = "[Phone] LIKE '" & frmSearch!txtPhone.Text & "%'"

ElseIf Trim(frmSearch!txtFirstName.Text) <> "" Then

strCriteria = "[FirstName] LIKE '" & frmSearch!txtFirstName.Text & "%'"

End If

With Res.rsReservation

'ищем по фамилии

.Find strCriteria

'если фамилия не найдена, тогда

If .EOF Then

MsgBox "Фамилия " & frmSearch!txtLastName.Text & " не найдена."

End If

End With

Unload frmSearch

End Sub

 

 

Код формы CReservation:

 

Option Explicit

' для генерации этого события используйте RaiseEvent с синтаксисом:

' RaiseEvent ResError[(arg1, arg2, ..., argn)]

Public Event ResError(ByVal Number As Long, ByVal Description As String)

Private cnReservation As ADODB.Connection

Public rsReservation As ADODB.Recordset

Public Function CancelReservation() As Boolean

rsReservation![Status] = "Аннулированный"

If MoveToArchive Then

CancelReservation = True

rsReservation.MoveFirst

Else

CancelReservation = False

End If

End Function

Public Function CheckOut() As Boolean

'проверяем статус, чтобы убедиться гость зарегистрировался

If rsReservation![Status] = "Активный" Then

rsReservation![Status] = "Неактивен"

If MoveToArchive Then

CheckOut = True

rsReservation.MoveFirst

End If

Else

MsgBox "Нельзя удалить неактивного пользователя."

CheckOut = False

End If

End Function

Public Function CheckIn() As Boolean

'проверяем статус

If rsReservation![Status] = "Ожидание..." Then

rsReservation![Status] = "Активный"

rsReservation![CheckInDate] = Format(Date, "mm-dd-yyyy")

rsReservation.Update

CheckIn = True

Else

CheckIn = False

End If

End Function

Public Function AddReservation() As Boolean

rsReservation.AddNew

rsReservation![Status] = "Ожидание"

AddReservation = True

End Function

 

Private Sub Class_GetDataMember(DataMember As String, Data As Object)

Set Data = rsReservation

End Sub

 

Private Sub Class_Initialize()

Dim SQL As String

SQL = "SELECT * FROM Reservation;"

'создаем и открываем соединение

Set cnReservation = New ADODB.Connection

cnReservation.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;" & _

"Data Source=C:\Labs\Rsvn.mdb"

cnReservation.Open

Set rsReservation = New ADODB.Recordset

'создаем и открываем набор записей

rsReservation.Open SQL, cnReservation, adOpenDynamic, adLockPessimistic

End Sub

 

Private Function MoveToArchive() As Boolean

Dim rsArchive As ADODB.Recordset

Set rsArchive = New ADODB.Recordset

On Error GoTo HandleError

rsArchive.Open "ReservationArchive", cnReservation, adOpenDynamic, adLockPessimistic

rsArchive.AddNew

With rsArchive

![FirstName] = rsReservation![FirstName]

![Lastname] = rsReservation![Lastname]

![Address] = rsReservation![Address]

![Phone] = rsReservation![Phone]

![PaymentType] = rsReservation![PaymentType]

![NumberOfPeople] = rsReservation![NumberOfPeople]

![Status] = rsReservation![Status]

![RoomNumber] = rsReservation![RoomNumber]

![Rate] = rsReservation![Rate]

![NumberOfDays] = rsReservation![NumberOfDays]

![CheckInDate] = rsReservation![CheckInDate]

.Update

End With

rsReservation.Delete adAffectCurrent

MoveToArchive = True

Exit Function

HandleError:

MoveToArchive = False

End Function

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.