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

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 Checkln() 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


Лабораторная работа №11

Содержание данной работы:

· Разработка приложений для Интернета (DHTML-приложений) с помощью VB6.0;

· Преобразование основной формы нашей программы в UserDocument, чтобы ее можно было открывать через веб-браузер.

 

Выявленные ошибки:

1. Все ошибки, унаследованные от л/р №10.

 

 



Скриншот программы, открытой в IE:

 

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

Option Explicit

Private WithEvents Res As CReservation

Private strOperationStatus

Private Sub UserDocument_Initialize()

Call Form_Load

End Sub

 

Private Sub adcReservation_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)

Dim strStatus As String

Dim dtCheckIn As Date

Dim intNumDays As Integer

On Error Resume Next

'проверяем способ оплаты (payment type) в базе данных

'и устанавливаем соответствующий переключатель

strStatus = adcReservation.Recordset![PaymentType]

Select Case strStatus

Case "CREDIT CARD"

grpPmtType(0).Value = True

Case "CHECK"

grpPmtType(1).Value = True

Case "CASH"

grpPmtType(2).Value = True

End Select

' присваиваем переменным dtCheckln и intNumDays ,

' значения из набора записей элемента ADO Data

dtCheckIn = adcReservation.Recordset![CheckInDate]

intNumDays = adcReservation.Recordset![NumberOfDays]

' вычисляем дату выписки и выводим ее в txtCheckOut

txtCheckOut.Text = Format(DateAdd("d", intNumDays, dtCheckIn), "mm-dd-yyyy")

End Sub

 

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

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()

'[AXDW] The following line was commented out by the ActiveX Document Migration Wizard.

'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

mnuGuestReservationCheckln.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

mnuGuestReservationCheckln.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 UserDocument.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 txtFirstName__KeyPress(KeyAscii As Integer)

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

End Sub

 

Private Sub txtAddress__KeyPress(KeyAscii As Integer)

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

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 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 = _

"Not a valid date format (ex. '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 Checkln() 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

Private Sub Class_Terminate()

 

End Sub


 

Лабораторная работа №12

Содержание данной работы:

· Создание и подключение файлов справки в формате Microsoft Help (*.hlp) к проекту на VB6.0.

· Настройка параметров компиляции и, собственно, компиляция исходного кода приложения в исполняемый файл.

· Использование Package and Deployment Wizard для создания дистрибутива приложения, куда, помимо самого исполняемого файла приложения, включаются все необходимые приложению библиотеки и компоненты, а также файл справки.

 

Выявленные ошибки:

1. Все ошибки, унаследованные от л/р №10.

 








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



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