|
Программирование >> Проектирование интерфейса пользователя
Да, в пределах предложения 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 , Файл не найден }
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |