Файл: Освой самостоятельно программирование для MS Access 2002 за 24 часа [П.Киммел].pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.10.2020

Просмотров: 7903

Скачиваний: 25

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 час. Стиль программирования:

"Что такое

 и что такое плохо"

Тесты

1. Назовите удобный способ именования процедур и функций.

Следует использовать словосочетания, состоящие из глагола, который описывает

операцию, и имени существительного, указывающего на объект воздействия.

2. В чем заключаются положительные стороны идеи повторного применения про-

граммного кода?

Код уже готов, подвергнут отладке и тестированию.

3. Смысл префиксной, или венгерской, нотации заключается в разработке системы

сокращенных названий типов, используемых для именования переменных. Верно

ли это?

Верно.

4. Термин

 процедура

 используется для обозначения и подпрограмм, и функций. Верно

ли это?

Верно.

5. Назовите важное полезное эмпирическое правило, которое обусловливает прием-

лемый размер кода процедуры или функции.

Процедура должна

 достаточно краткой, чтобы выполнять только те операции,

о которых свидетельствует ее название.

1. Придумайте имя функции, предназначенной для вычисления полной и частичной

сумм.

2. Предложите имена для пары функций, одна из которых просто закрывает файл, а

другая выполняет проверку корректности выполнения этой операции.

DoCloseFile и CloseFile.

3. Задайте названия переменной, предназначенной для хранения номера открытого

файла, хранения номера ошибки открытия файла, а также для процедуры, вычис-
ляющей сумму процента при известных сумме капитала и процентной ставке.

FileHandle,

 и

 час. ADODB — ваш верный

помощник

Тесты

1. Назовите синоним термина

 провайдер.

Термин

 провайдер

 является новым, более широким. Он соответствует традицион-

ному понятию

 источник данных.

Приложение. Ответы 455


background image

2. С помощью какого предложения SQL

 отфильтрованы данные в запросе?

WHERE.

3. Какое свойство Recordset ограничивает данные, доступные в записи?

Свойство Filter объекта

 соответствует назначению предложе-

ния команды WHERE на языке SQL.

4. Назовите имя свойства для представления данных, хранящихся в поле таблицы.

Объекту какого класса оно принадлежит?
Свойство Value принадлежит объекту Field.

5. Как называется коллекция в составе объекта Recordset, предназначенная для хра-

нения данных?

Fields.

1. Исправьте текст запроса в листинге 15.6, чтобы предусмотреть возможность сорти-

ровки записей в порядке возрастания по значению поля, название которого задано
переменной

 (Совет:

 предложением ORDER BY.)

SQL = "SELECT * FROM MUSIC WHERE

 &

SearchFieldName &

 &

FindValue &

 ORDER BY

 & SearchFieldName

2. Поясните, каким образом код листинга 15.7 можно еще более упростить и унифи-

цировать.

Достаточно удачный способ состоит в том, чтобы передавать имя коллекции в ка-
честве аргумента функции. В этом случае код легко приспособить для работы с лю-

быми другими коллекциями.

3. Продемонстрируйте, как связать элементы произвольной коллекции с записями

набора данных. (Совет:

 ключевым полем таблицы.)

Создавая элемент коллекции, добавьте в него значение ключевого поля записи:

Call

 "ARTIST"

Str(

 "ID"

 ) )

Значение ключевого поля сохраняется в коллекции в виде строки — не забудьте
выполнить обратное преобразование (в длинное целое число) при необходимости
использования значения ключа для поиска записи.

 час. Применение языка SQL

Тесты

1. Что такое подчиненный (вложенный) запрос?

Вложенный запрос — это запрос, используемый в правой части одного из предика-
тов предложения WHERE, т.е. запрос, расположенный внутри другой команды SQL.

2. С какой целью употребляется служебное слово ALL вместе с UNION?

Служебное слово ALL в сочетании с UNION предписывает системе не удалять из ре-
зультата выполнения объединенного запроса повторяющиеся строки. По умолча-
нию, т.е. в отсутствие слова ALL, такие строки изымаются.

3. Можно ли применять вложенный запрос в контексте команды DELETE? Если да, то

зачем?

456 Приложение. Ответы


background image

Да, в пределах предложения WHERE для уточнения содержимого набора удаляемых

строк на основе данных другой таблицы или нескольких таблиц.

4. Ограничиваются ли возможности хранимых процедур использованием команды

SELECT?

Нет. В теле хранимой процедуры могут использоваться почти все возможные кон-

струкции SQL — обращайтесь к документации. Другой вопрос — не во всех систе-

мах управления базами данных поддерживаются хранимые процедуры как таковые.

1. Напишите предложение WHERE с предикатом IN, позволяющее отобрать все записи

таблицы MUSIC, в поле PUBLISHER которых содержатся значения Elektra или Em-
pire.

WHERE Publisher IN (

 ).

2. Исправьте команду UPDATE, приведенную в строке 2 листинга 16.6, таким образом,

чтобы в верхний регистр были переведены первые символы имени и фамилии ис-

полнителя.

UPDATE Music SET First_Name

 ),

 =

3. Создайте хранимую процедуру, позволяющую удалить из таблицы

 запись по

заданному значению поля

PARAMETER [The_Artist] TEXT;

DELETE FROM Music WHERE Last Name = [The  A r t i s t ]

 час. Отладка кода

Тесты

1. Как называется класс, содержащий основные программные средства отладки?

Debug.

2. Какие, полезные во время тестирования методы предлагаются классом, упомяну-

тым в предыдущем вопросе?

Print И Assert.

3. Какие цели преследует трассировка?

Проверка кода.

4. Следует ли удалять отладочный код из окончательной версии приложения с помо-

щью редактора или условных директив компилятора?

Никогда не удаляйте отладочный код, поскольку впоследствии, после внесения из-

менений и исправлений, он может понадобиться вновь, — пользуйтесь условными

директивами компилятора,

 быстро включать отладочные процеду-

ры в окончательную версию приложения или изымать их.

1. Напишите функцию, возвращающую значение True или False в зависимости от

того, существует ли файл с заданным именем.

Sub

 FileName As String } As Boolean

FileExists =

  D i r ( FileName ) ) > 0

End Sub

Приложение. Ответы 457


background image

2. Создайте тестовый код, использующий обращения к функции, построенной при

выполнении

Sub

 )

MsgBox FileExists(

 )

 123 )

End Sub

3. Разработайте версию процедуры Trace, предусматривающую вывод информации в

текстовый файл.

Private Function

 FileName As String,

 As Long,

ByVal TraceMessage As Variant ) As String
GetTraceOutput =

 & FileName

&

 & TraceNumber &

 в

 & Now

& vbCrLf & TraceMessage & vbCrLf

End Function
Private Sub

 ByVal FileName As String,

ByVal TraceNumber As Long,
ByVal TraceMessage As Variant }

Dim Handle As Double

Handle = FreeFile
On Error GoTo FINALLY
Open FileName &

 For Append As

Print

 FileName,

TraceNumber, TraceMessage )

FINALLY:
Close

End Sub

Sub

 FileName As String,

ByVal TraceNumber As Long,
ByVal TraceMessage As Variant )

 DebuggingOn Then

Call

 TraceNumber,

 If

End Sub

Sub

 )

Call

 "Test" )

End Sub

Листинг содержит образец реализации

 набора процедур и функций.

(Обратите внимание, что выражение форматирования строки результата трассиров-

ки вынесено в отдельную функцию.)

 час. Обработка ошибок во время

выполнения программы

Тесты

1. Какие аргументы необходимо передать методу Raise объекта класса Err, чтобы

связать сообщение об ошибке с файлами оперативной справки?

HelpFile и HelpContext.

458 Приложение. Ответы


background image

2. Как называются

 и его метод,

 выводить информацию в окно

Immediate во время отладки приложения?

Объект Debug и метод Print.

3. Каково отличие обычного обработчика ошибок от того, который предназначен для

решения задачи освобождения занятых ресурсов?
Тело обыкновенного обработчика выполняется только при возникновении ошибки,
а во втором случае код работает всегда.

4. Можно ли сгенерировать стандартное сообщение об ошибке? Если да, то как и в

каких случаях это целесообразно делать?

Да. Используйте метод Raise объекта Err в обработчике ошибок с целью отобра-
жения информации в тех проблемных ситуациях, для которых специальные дейст-

вия вами не предусмотрены.

1. Создайте обработчик, предусматривающий принудительное присвоение объекту

класса Recordset значения Nothing.

Set RS = Nothing
End Sub

 End Function

2. Исправьте код листинга 18.3 в предположении, что пользователь может удалять

файл, помеченный атрибутом "только для чтения".

Sub DeleteFile(

 FileName As String )

On Error GoTo EXCEPT

Kill FileName

Exit Sub

Const

Const ACCESS_ERROR = 75

Select Case

Case 53:

If

 &

 & FileName &

& vbCrLf & "Попробуем

vbRetryCancel ) = vbRetry) Then

FileName =

 "Введите имя

 "Имя

 )

If (FileExists( FileName

 Then Resume

End If

Case 75:

If (MsgBox(

 &

& FileName &

 & vbCrLf

"Файл только для чтения.

vbYesNo ) = vbYes) Then

Call

 FileName,

 )

Resume

End If

Case Else

Call RaiseError( Err )

End Select

End Sub

3. Напишите команду генерации сообщения об ошибке отсутствия файла, предусмат-

ривающую задание пользовательского номера ошибки.

Call

 vbObjectError + 100,

"Файл не найден" }

Приложение. Ответы 459