Лекция 4 - СУБД.ppt
- Количество слайдов: 25
Баранова Евгения Васильевна, профессор кафедры информатики РГПУ им. А. И. Герцена Системы управления базами данных
Разработка БД-приложений Класс TField: основное назначение и свойства TField обеспечивает программисту возможности для работы с составляющими таблицы полями: vизменение значения поля текущей записи; vпреобразование значения поля текущей записи от одного типа данных к другому; vпроверка данных, вводимых пользователем в поле таблицы; vопределение способов отображения или редактирования полей таблицы; vопределение вычисляемых (calculated) полей на основе реальных полей БД; vопределение связанных (lookup) полей (полей из другой таблицы БД).
Разработка БД-приложений Свойства As. Boolean, As. Currency, As. Date. Time, As. Float, As. Integer, As. String, As. Variant - позволяют считывать значение из поля текущей записи или записывать в него значение с учетом указанных преобразований. Data. Set – связанная таблица или запрос. Edit. Mask – маска для форматирования значения поля. Field. Name – имя поля. Field. No – порядковый номер поля в связанной таблице или запросе.
Разработка БД-приложений Свойства Lookup. Data. Set, Lookup. Key. Fields Lookup. Result. Fields – для связанных полей: таблица-справочник, список полей-ключей исходной таблицы, список полей-результатов таблицы-справочника Read. Only - определяет, можно ли поле редактировать (False) или нет (True). Value – позволяет считывать значение из поля текущей записи или записывать в него значение. Visible – определяет, можно отображать поле в визуальных компонентах (True) или нет (False).
Разработка БД-приложений Методы аssign – копирует значение из поля связанного множества данных в свойство Value; Table 1. Edit; //в режим редактирования Table 1. Field. By. Name('Name'). Assign(Table 1. Field. By. Na me('Area')); Table 1. Post; //выход из режима редактирования сlear – очищает значение поля Table 1. Edit; Table 1. Field. By. Name('Name'). Clear; Table 1. Post; событие On. Change – возникает после изменения значения поля.
Разработка БД-приложений
Разработка БД-приложений Событие On. Change – возникает после изменения значения поля.
Разработка БД-приложений
Разработка БД-приложений Класс TТable: основное назначение Класс TTable обеспечивает связь таблиц БД через объекты класса TData. Source с визуальными компонентами. Класс выполняет следующие функции: v открытие и закрытие доступа к физической таблице БД; v отбор записей по заданному критерию (установка фильтров); v поиск записей; v установка индексов для последовательности перехода по таблице БД и ускорения поиска; v «навигация» по таблице БД; v добавление, удаление , редактирование записей; v доступ к значениям полей текущей записи таблицы; v обеспечение связи с другими таблицами БД.
Разработка БД-приложений Пусть компонент Table 1 представляет таблицу базы данных с полями: Name (A), Name_Subject (A) и Mark (S), представляющую таблицу оценок по различным предметам, полученных студентами во время сдачи экзаменов в сессию. Рассмотрим некоторые свойства, необходимые для реализации простейших приложений. Некоторые из них доступны только в режиме программирования (они помечены индексом p), остальные доступны и в режиме разработки (в Инспекторе Объектов), и в режиме программирования. Значения, доступные в Инспекторе Объектов, могут быть изменены программно. Если эти значения программно не изменяются, то они сохраняются в процессе выполнения приложения. После завершения работы приложения восстанавливаются значения, заданные в Инспекторе Объектов.
Разработка БД-приложений Active – открывает (True) или закрывает (False) доступ к НД. Database. Name – содержит псевдоним БД. Table. Name – имя представляемой компонентом таблицы БД, устанавливается в режиме разработки для обеспечения связи с таблицей. Read. Only - определяет, позволяет ли объект класса TTable только считывать данные из таблицы БД или также и редактировать их. В первом случае свойство имеет значение True, а во втором False. Filter, Filtered – обеспечивают установку фильтра на физическую таблицу БД с целью отбора записей, удовлетворяющих заданным условиям. Filtered определяет установку критерия (True), определенного в Filter, или отменяет фильтр (False). Значение свойства Filter – строка следующей структуры: <имя поля><знак сравнения><значение>.
Разработка БД-приложений Отбор из таблицы таких записей, значения поля Mark в которых больше 4: Table 1. Filtered: =true; Table 1. Filter: ='Mark>4'; Для отмены фильтра достаточно выполнить оператор: Table 1. Filtered: =false; Строковые конcтанты заключаются в апострофы, при этом используется соглашение, что два апострофа подряд внутри строки задают апостроф как символ. Table 1. Filter: ='Name='''+ 'Иванов''' задаст как критерий отбора условие: Name='Иванов'. В критерии отбора можно задавать и несколько условий, соединенных логическими операторами: Table 1. Filter: ='Mark>4 and Name='''+'Иванов'''.
Разработка БД-приложений Fields (p) – позволяет обратиться к значениям полей НД по номеру поля. Вывод на экран значения поля Name: Show. Message(Table 1. Fields[0]. As. String). Index. Name – содержит имя используемого индексного файла для таблицы БД, обеспечивающего сортировку записей по определенным полям Recno (p) - определяет номер текущей записи таблицы. Значение свойства доступно только при выполнении приложения и только для считывания. Свойство не учитывает установленный на таблицу фильтр. Следующий оператор в окне сообщений выводит номер текущей записи для таблицы БД, представленной компонентом с именем Table 1: Show. Message(Int. To. Str(Table 1. Recno)). Record. Count (p) – определяет количество записей в таблице. Значение свойства доступно только при выполнении приложения и только для считывания. Свойство учитывает установленный на таблицу фильтр, т. е. вычисляет количество отфильтрованных записей. Следующий оператор в окне сообщений выводит количество записи в таблице БД, представленной компонентом с именем Table 1: Show. Message(Int. To. Str(Table 1. Record. Count)).
Разработка БД-приложений Bof (p) – принимает значение True, когда открывается таблица и сохраняет это значение, пока не произойдет попытка перейти от первой записи таблицы к предыдущей, в этом случае получит значение False. Eof (p) – принимает значение True, когда открывается таблица и сохраняет это значение, пока не произойдет попытка перейти от последней записи таблицы к следующей, в этом случае получит значение False. Свойства обычно используются для просмотра записей таблицы от последней к первой или обратно. //Открытие таблицы Table 1. Active: =true; while not Table 1. Eof do // Пока не дошли до конца таблицы begin <доступ к текущей записи таблицы>; <переход к очередной записи таблицы> end;
Разработка БД-приложений //Открытие таблицы Table 1. Active: =true; while not Table 1. Eof do // Пока не дошли до конца таблицы begin showmessage(Table 1. Field. By. Name(‘Name’). a s. String)); Table 1. Next end;
Разработка БД-приложений Методы класса TTable 1) Доступ к таблице БД Связь между компонентом и реальной таблицей БД обеспечивается методом Open. Доступ к записям таблицы БД через связанный с таблицей компонент возможен только после выполнения этого метода. Open – открывает доступ к таблице БД через компонент (свойство Active таблицы получает значение True). Обращение имеет вид: Table 1. Open. Close – закрывает доступ к таблице БД через компонент (свойство Active таблицы получает значение False). Table 1. Close.
Разработка БД-приложений 2) Перемещение по записям таблицы Для перехода по записям таблицы БД, связанной с компонентом, используются следующие методы: First – текущей становится первая запись таблицы; Last – текущей становится последняя запись таблицы; Next – текущей становится следующая запись таблицы; Prior – текущей становится предыдущая запись таблицы. Для последовательного перехода по записям таблицы можно использовать следующий цикл: Table 1. First; while not Table 1. Eof do // Пока не дошли до конца таблицы begin <доступ к текущей записи таблицы>; // Переход к очередной записи таблицы Table 1. Next end;
Разработка БД-приложений 3) Режим редактирования таблицы Для внесения изменений в таблицу БД, связанную с компонентом, используется метод Edit: Table 1. Edit. После этого возможно изменение значений полей текущей записи таблицы БД. Такой режим называется режимом редактирования. Для выхода из режима редактирования используются методы Post (выход из режима редактирования с внесением произведенных изменений в текущую запись таблицы) или Cancel (выход из режима редактирования без внесения произведенных изменений). Для перехода к другой записи таблицы необходимо выйти из режима редактирования!
Разработка БД-приложений 4) Доступ к значениям полей по имени С помощью метода Field. By. Name компонента Table возможен доступ к полю физической таблицы по имени. function Field. By. Name(const Field. Name: string): TField; В параметре Field. Name задается имя поля таблицы БД, к которому происходит доступ. Пусть таблица БД, представляемая компонентом Table 1, содержит поля: F_Date (D) и F_Text (A), а переменные PDate и PText содержат введенные пользователем новые значения полей. Table 1. Edit; //Изменение значений полей Table 1. Field. By. Name('F_Date'). As. Date. Time: =PDate; Table 1. Field. By. Name('F_Text'). As. String: =PText;
Разработка БД-приложений if Message. Dlg('Внести изменения? ', mt. Confirmation, [mb. Yes, mb. No], 0) = mr. Yes then //пользователь подтверждает внесение изменений в таблицу БД begin Table 1. Post; Show. Message('Изменения внесены!') end else //пользователь отменяет внесение изменений в таблицу БД begin Table 1. Cancel; Show. Message('Изменения отменены!') end; После выполнения метода Post изменения будут внесены в текущую запись таблицы БД и «откат» (возврат предыдущих значений) будет невозможен. После выполнения метода Cancel поля текущей записи таблицы БД получат прежние значения.
Разработка БД-приложений Для последовательного просмотра значений указанных полей таблицы можно использовать следующий фрагмент программного кода: Table 1. First; while not Table 1. Eof do // Пока не дошли до конца таблицы begin //Доступ к значениям полей текущей записи таблицы Show. Message('Дата: '+Table 1. Field. By. Name('F_Date'). As. String+' 'Текст: '+ Table 1. Field. By. Name('F_Text'). Value); // Переход к очередной записи таблицы Table 1. Next end;
Разработка БД-приложений Существует еще один способ программного доступа к значениям полей текущей записи: по физической таблице БД сформировать массив полей и связать его с компонентом Table 1. Для этого необходимо щелкнуть дважды по компоненту Table 1, нажать правую кнопку мыши и в меню выбрать пункт меню Add all fields. После этого сформируется связанный с компонентом массив полей исходной таблицы БД. Имена полей формируются по умолчанию в виде: <Имя таблицы><Имя поля>, типы полей соответствуют типам полей таблицы БД. Например, вывод значений из предыдущего примера в этом случае можно было бы записать так: Show. Message('Дата: '+Table 1 F_Date. As. String+' 'Текст: '+ Table 1 F_Text. Value);
Разработка БД-приложений
Разработка БД-приложений 5) Добавление, удаление записей Добавление записей в таблицу БД через компонент Table происходит с помощью методов: Append – добавляет пустую запись в конец таблицы; Insert – вставляет пустую запись перед текущей записью таблицы. Оба метода автоматически включают режим редактирования новой записи. Для выхода из режима редактирования необходимо выполнить один из двух рассмотренных ранее методов (Post или Cancel). Например, Table 1. Append; <внесение данных в поля новой записи>; Table 1. Post;
Разработка БД-приложений Удаление текущей записи из таблицы БД через компонент Table происходит с помощью метода Delete: Table 1. Delete. Is. Empty – проверяет, содержит ли таблица записи, если содержит, то возвращает значение Тrue и False в противном случае. Например: if Table 1. Is. Empty then Show. Message('Таблица не содержит данных!') else. . . <обработка данных таблицы>
Лекция 4 - СУБД.ppt