Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР_ИОСУ.doc
Скачиваний:
2
Добавлен:
14.11.2019
Размер:
1.57 Mб
Скачать

3. Событие Load – загрузка формы Проверка

Для объекта Проверка и события Load (которое наступает при открытии данной формы) имя процедуры будет Проверка_Load(). В этой процедуре должны выполняться следующие действия:

а) текстовый файл spisok.txt открывается для чтения:

Open “ spisok.txt” For Input As # 1

б) считывается числовое значение в переменную kol – количе­ство фамилий

Input # 1, kol

в) с помощью цикла For i = 1 То kol... Next i и процедуры Input#1 осуществляется попарное считывание из текстового файла фамилий и соответствующих им паролей и занесение их в элементы массива mass(n) типа String;

г) по окончании считывания текстовый файл закрывается:

Close #1;

д) счетчику ns числа попыток ввода пароля присваивается зна­чение ноль.

Примечание. Все необходимые переменные (имена можно вы­бирать по своему усмотрению) должны быть описаны с помощью инструкции Dim.

3. Событие AfterUpdate для объекта Поле1

Поле 1 предназначено для ввода фамилии. После ввода в него символов и нажатия клавиши [Enter] наступает событие AfterUpdate (После обновления). Соответствующая процедура обработки име­ет имя Полеl_AfterUpdate ().

Она выполняет следующие действия. Организуется цикл, в ко­тором введенное в поле значение (Поле1.Value) сравнивается с эле­ментами массива mass.

При совпадении введенного значения с одним из элементов гло­бальной переменной j присваивается номер этого элемента, в про­тивном случае выводится сообщение «Имя введено неверно».

При трехкратном неправильном вводе фамилии выполняется инструкция Проверка.Close (форма закрывается).

4. Событие AfterUpdate для объекта Поле2

Поле2 предназначено для ввода пароля. Поскольку после ввода фамилии процедура Полеl_AfterUpdate () определила номер j эле­мента массива mass, содержащую эту фамилию, то теперь доста­точно сравнить введенный пароль со значением элемента mass(j + 1) и в случае их совпадения присвоить логической переменной flag значение True (в противном случае – False).

Пример такой процедуры:

Private Sub noAe2_AfterUpdate()

flag = True

password = Поле2. Value

If password <> mass(j + 1) Then flag = False

End Sub

Переменная flag должна быть предварительно описана как гло­бальная:

Dim flag As Boolean

5. Событие Click для объекта Кнопка

При нажатии кнопки с именем ОК должно произойти следую­щее: если переменная flag имеет значение True, то должна быть выполнена команда «открыть Главную_кнопочную_форму»:

DoCmd.OpenForm “Главная_кнопочная_форма”

В противном случае счетчик числа попыток ns увеличивается на единицу и выводится сообщение “Пароль введен неверно, попробуйте еще раз!”. Если число попыток ока­зывается больше трех, подается звуковой сигнал и выполняется команда «Закрыть форму Проверка».

П римечание. Окно сообщения выводится с помощью процедуры MsgBox. Не­обходимо установить параметры этой процедуры так, чтобы окно сообщения соот­ветствовало показанному на рисунке.

Ниже приведен примерный текст программы на языке VBA.

Option Compare Database

Option Explicit

Dim login, password, str, kol As String

Dim flag As Boolean

Dim i, j, ns As Byte

Dim mass(l To 10) As String

Private Sub Form_Load()

ns = 0 ' После загрузки формы счетчик обнуляется

’ Файл spisok.txt находится в папке «Мои документы»

' которая указана как рабочий каталог Access

‘ (изменение – через меню ' Сервис-Параметры...–

‘ Общие – Рабочий каталог)

Open “spisok.txt” For Input As # 1

Input # 1, kol

For i = 1 To kol Input # 1, mass(2 * i – 1), mass(2 * i)

Nexti

Close # 1

End Sub

Private Sub Кнопка5_Click()

If flag Then

DoCmd.OpenForm “Главная_кнопочная_форма”

Else:

ns = ns + 1

MsgBox “Пароль введен неверно, попробуйте еще раз!”, vbCritical, “Внимание!” End If

If ns > 2 Then

For i = 1 To 100

Beep

Next i

DoCmd.Close

End If

End Sub

Private Sub Поле1_AfterUpdate()

login = Поле1.Value

j = 0

For i = 1 To kol

If login = mass(2 *i – 1) Then j = i

Next i

If j = 0 Then

MsgBox “Имя введено неверно”

End If

End Sub

Private Sub Поле3_AfterUpdate()

flag = True

password = ПолеЗ.Value

If password <> mass(2 * j) Then flag = False

End Sub

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]