Программирование >>  Проектирование интерфейса пользователя 

1 ... 142 143 144 [ 145 ] 146 147 148 ... 153


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

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

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

Упражнения

1. Напишите предложение WHERE с предикатом IN, позволяющее отобрать все записи таблицы MUSIC, в поле PUBLISHER которых содержатся значения Elektra или Empire.

WHERE Publisher IN ( Elektra, Empire ).

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

UPDATE Music SET Frrst Name = ICap( [First Name] ) ,

Second Name = ICap( [Second Name] );

3. Создайте хранимую процедуру, позволяющую удалить из таблиц шзхс запись по заданному значению пож LAST NAME.

PARAMETER [TheArtist] TEXT;

DELETE FROM Music WHERE Last Name = [The Artist]

17-Й час. Отладка кода Тесты

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

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

Print И Assert.

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

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

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

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

Упражнения

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

Sub FileExists ( ByVal FileName As String } As Boolean

FileExists = Len ( Dir( FileName ) ) > 0 End Sub



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

Sub TestFileExists{ )

MsgBox FileExists ( C:\AUTOEXEC.BAT ) MsgBox FileExists( 123 )

End Sub

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

Private Function GetTraceOutput( ByVal FileName As String, ByVal TraceNumber As Long,

ByVal TraceMessage As Variant ) As String GetTraceOutput = Трассировка: & FileName

& \ & TraceNumber & в & Now

& vbCrLf & TraceMessage & vbCrLf End Function

Private Sub DoTraceFile( ByVal FileName As String, ByVal TraceNumber As Long, ByVal TraceMessage As Variant } Dim Handle As Double Handle = FreeFile On Error GoTo FINALLY

Open FileName & .log For Append As #Handle Print #Handle, GetTraceOutput( FileName,

TraceNumber, TraceMessage ) FINALLY: Close #Handle End Sub

Sub TraceFile(ByVal FileName As String, ByVal TraceNumber As Long, ByVal TraceMessage As Variant ) #If DebuggingOn Then

Call DoTracehile(FileName, TraceNumber,

TraceMessage)

#End If

End Sub

Sub TestTraceFile( )

Call TraceFile( Modulel , 1, Test )

End Sub

Листинг содержит образец реализации полного набора процедур и функций. (Обратите внимание, что выражение форматирования строки результата трассировки вынесено в отдельную функцию.)

18-й час. Обработка ошибок во время выполнения программы

Тесты

1. Какие аргументы необходимо передать методу Raise объекта класса Err, чтобы связать сообщение об ошибке с файлами оперативной справки?

HelpFile и HelpContext.



2. Как наз1ваютс >ект и его метод шяющие в1водить информацию в окно Immediate во время отладки приложения?

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

3. Каково отличие об1чного обработчика ошибок от того, котор1й предназначен для решения задачи освобождения занят1х ресурсов?

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

4. Можно ли сгенерировать стандартное сообщение об ошибке? Если да, то как и в каких случаях это целесообразно делать?

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

Упражнения

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

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

Set RS = Nothing

End Sub Или End Function

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

Sub DeleteFile( ByVal FileName As String ) On Error GoTo EXCEPT Kill FileName Exit Sub EXCEPT:

Const FILE NOT FOUND =53 Const ACCESS ERROR = 75 Select Case Err.Nлnber Case 53:

If (MsgBox(Err.Description & ( & EiieName & ) &vbCrLf& Попробуем снова? , vbRetryCancel ) = vbRetry) Then FileName = InputBox ( Введите имя

файла: , Имя файла , ) If (FileExists( FileName ) ) Then Resume End If Case 75:

If (MsgBox( Err.Description & ( & EiieName & ) & vbCrLf & Файл только для чтения. Удалить? , vbYesNo ) = vbYes) Then Call SetAttr( FileName, vbNormal ) Resume

End If

Case Else

Call RaiseError( Err ) End Select End Sub

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

Call Err.Raise( vbObjectError + 100, Modulel , Файл не найден }



1 ... 142 143 144 [ 145 ] 146 147 148 ... 153

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика