Файл: Освой самостоятельно программирование для MS Access 2002 за 24 часа [П.Киммел].pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 21.10.2020
Просмотров: 7860
Скачиваний: 25

1. Создайте макрос для резервного копирования всех таблиц базы данных.
Sub Backup
Table As TableDef)
On Error Resume Next
acTable,
&
,
& "Backup",
acTable,
End Sub
Sub
)
Dim I As Integer
Dim Table As TableDef
For Each Table In
Call
Table )
Next
End Sub
2. Напишите фрагмент кода, позволяющего пользователю ввести наименование фай-
ла, данные из которого предполагается импортировать.
=
"Введите имя файла для
"Имя фай-
ла",
)
3. Напишите код, аналогичный описанному выше макросу, для создания резервной
копии.
См. процедуру Backup из упражнения 1.
час. Как использовать готовые
решения
Тесты
1. Как называется функция, предназначенная для поиска подстрок?
2. В чем состоит принципиальное отличие модальных окон от остальных?
Открытое модальное окно препятствует использованию остальных окон приложе-
ния. Чтобы получить возможность продолжения работы, модальное окно необхо-
димо
3. Как должна выглядеть команда открытия текстового файла в режиме чтения?
Open Имя файла For Input As #НомерФайла
4. Какую функцию можно использовать для интерактивного ввода данных?
InputBox.
1. Напишите выражение для форматирования
почтового индекса.
PostalCodeVar,
)
2. Постройте процедуру, добавляющую указанную строку в заданный файл.
Sub
(ByVal FileName As
ByVal Text As String)
Dim Handle As Double
Handle = FreeFile
450 Приложение. Ответы

Open
For Append As ttHandle
Text
Close
End Sub
3. Создайте подпрограмму поиска заданного имени в двоичном файле, предполагая,
что при сохранении данных использовался тип
и файл содержит более од-
ной записи.
Sub FindByName
Name As String)
Dim Handle As Double
Handle = FreeFile
On Error GoTo FINALLY
Open
For Binary Access Read As
Mail As Email
Do W h i l e Not
Handle
Get
If
= Name) Then
MsgBox "Найдено:
&
&
&
Exit Do
End If
Loop
Close #Handle
End Sub
-й час. От сложного к простому:
создание собственных типов данных
Тесты
1. Может ли пользовательский тип данных содержать переменную перечислимого типа?
Да. Типы данных, объявленные с помощью служебного слова Туре, могут содер-
жать экземпляры других пользовательских и перечислимых типов.
2. Для каких целей применяются пользовательские и перечислимые типы и в чем их
различие?
Типы позволяют собрать в единое целое ряд различных элементов данных, а пере-
числения используются для удобства представления ограниченных наборов цело-
численных значений.
3. Могут ли в объявлениях типов содержаться функции или процедуры?
Нет, но это возможно в конструкциях классов.
4. Допускаются ли в определениях типов члены-константы?
Нет. Постоянные значения не могут быть членами типа, определяемого пользова-
телем.
5. Позволяется ли включать в объявление типа ссылочную переменную?
Формально это не
хотя и не является общеупотребительной практикой.
1. Создайте объявление типа для хранения данных об имени человека, его адресе и
номере телефона.
Приложение. Ответы 451

Type Contact
Name As String
As String
Address2 As String
City As String
State As String
PostalCode As String
End Type
2. Определите тип, одним из членов которого будет экземпляр типа, созданного в
предыдущем упражнении. Что может послужить причиной для осуществления по-
добных действий? Почему бы просто не исправить объявление исходного типа?
Type InternetContact
W h o As Contact
Email As String
End Type
Здесь мы создали новый тип, одним из членов которого является экземпляр ранее
построенного типа. При таком подходе нам не придется исправлять существующий
код, чтобы приспособить его к появлению в составе типа новой порции данных,
описывающей адрес электронной почты.
3. Объявите перечислимый тип, представляющий все сорта мороженого.
IceCreamFlavors
Vanilla
Strawberry
Chocolate
Boisenberry
End Enum
час.
данными
переменного объема
Тесты
1. Как называется функция, позволяющая построить и вернуть массив?
Array.
2. Какая функция используется для инициализации элементов массива значением,
равноценным null?
Erase.
3. Действует ли функция Erase одинаково в отношении массивов данных различных
типов?
Нет. "Поведение" функции Erase зависит от типа массива. Так, например, эле-
менты массива объектов получают значение Nothing, а массиву типа Variant це-
ликом присваивается значение Empty.
4. Каким образом можно динамически, т.е. в ходе выполнения программы, изменить
размер массива?
Следует использовать команду повторного объявления массива с помощью служеб-
ного слова
Dim.
5. Какой из алгоритмов сортировки более эффективен — метод
выбора
или "быстрой сортировки"?
452 Приложение. Ответы

Наиболее
считается алгоритм "быстрой сортировки", правда,
при условии, если данные не упорядочены предварительно. В последнем случае
более высокую производительность может продемонстрировать алгоритм выбора.
1. Напишите выражение сравнения строк для использования в процедуре сортировки.
If
> 0} Then
2. Исправьте текст процедуры Dump таким образом, чтобы вывод данных осуществ-
лялся в файл. Почему лучше выносить подобный код в отдельный именованный
блок (функцию или процедуру) а не вносить его непосредственно в то место про-
граммы, где он необходим?
Sub
) As Long)
Dim Handle As Double
Handle = FreeFile
Open
For Output As
Dim
As Variant
For Each Elem In Data
Print #Handle, Elem
Next Elem
Close
End Sub
3. Внесите изменения в текст процедуры BubbleSort, чтобы осуществить сортировку
данных в порядке их убывания. (Имейте в виду: в листинге 12.9 предполагается ва-
риант сортировки по возрастанию.)
Sub
ByRef
) As Long )
Dim I As Integer, J As Integer
For I =
Data ) To
Data
1
For J = I + 1 To
Data )
If (Data(J) >
Then
Call
Data, I, J )
End If
Next J
Next I
End Sub
час. Коллекции данных
Тесты
Чем отличается метод от обычной функции (процедуры)?
Метод — обобщенное название функций и процедур, служащих членами класса.
2. Как называется метод, позволяющий добавлять в коллекцию новые элементы?
Эту функцию выполняет базовый метод класса коллекций, который носит назва-
ние
Add.
3. Каково назначение конструкции присвоения переменной-объекту значения Noth-
ing?
Операция присвоения переменной-объекту класса предопределенного значения
Nothing позволяет вернуть фрагмент памяти, отведенный объекту, в общий пул
динамически распределяемой памяти.
Приложение. Ответы 453

4. Обязательно ли перед операцией очистки памяти, отведенной
коллекции,
удалять все его элементы?
Нет. Собственно, и саму операцию очистки выполнять необязательно, поскольку
компилятор
снабжен специальными средствами
сборки мусора.
5. Назовите способы циклического прохождения по элементам коллекции.
С этой целью могут применяться циклы For Each . . . Next и For
Next,
последний из которых учитывает значение, хранящееся в Count.
1. Создайте коллекцию и добавьте в нее 10 целочисленных значений.
Sub
)
Dim Integers As New Collection
Dim I As Integer
For
I = 1 To 10
Rnd * 10 ) )
Next I
Set Integers = Nothing
End Sub
2. Напишите процедуру,
отобразить содержимое коллекции, построен-
ной при выполнении предыдущего упражнения, в окне Immediate.
Добавьте в код приведенной выше процедуры
(непосредственно
перед строкой Set Integers = Nothing) следующий фрагмент:
For I = 1 То
Next
I
3. Исправьте текст рассмотренной в главе 12 процедуры сортировки по методу
"пузырька" с учетом возможности обработки элементов коллекции.
Sub
ByRef ACollection As Collection,
I As Integer,
J As Integer )
Dim Temp As Integer
Temp =
Call
, , J )
Call
J + 1 )
Call
Temp, , I }
Call
I + 1 )
End Sub
Sub
Integers As Collection)
Dim I As Integer, J As Integer
For I = 1 To
- 1
For J = I + 1 To
If
>
Then
Call
I, J }
End If
Next J
Next I
End Sub
Процедура сортировки практически не изменилась. Реализация же процедуры Swap
в значительной степени зависит от типов данных — в нашем случае использованы
стандартные методы Add и Remove класса Collection.
454 Приложение. Ответы