- •Оглавление
- •Часть 1. Краткое описание Delphi 8
- •Часть 2. Технология ado для баз данных access 186
- •9.1. Общие сведения 289
- •Введение
- •Часть 1. Краткое описание Delphi
- •1. Работа со средой delphi
- •1.1. Ознакомление с delphi
- •1.2. Вкладка дизайнера формы (design)
- •1.3. Вкладка редактора кода программы
- •1.4. Окно object inspector
- •1.5. Окно project manager
- •1.6. Окно палитры инструментов
- •1.7. Создание первого проекта приложения
- •1.8. Сохранение проекта
- •1.8. Сохранение проекта
- •1.9. Компиляция
- •2. Основа языка delphi
- •2.1. Основные понятия языка
- •2.1.1. Элементы языка
- •2.1.2. Пример простой программы
- •2.1.3. Типы данных
- •2.1.4. Операции и выражения
- •2.1.5. Стандартные функции
- •2.1.6. Ввод и вывод на дисплей
- •2.1.7. Оператор присваивания
- •2.2. Операторы языка паскаль
- •2.2.1. Составной оператор
- •2.2.2. Условный оператор
- •2.2.3. Сложные условия
- •2.2.4. Оператор выбора case
- •2.2.5. Оператор цикла for
- •2.2.6. Оператор цикла while
- •2.2.7. Оператор цикла repeat
- •2.2.8. Вложенные циклы
- •2.2.9. Прочие операторы
- •2.3. Общая структура программы
- •2.3.1. Перечень разделов программы
- •2.4. Массивы
- •2.4.1. Одномерные массивы
- •2.4.2. Сортировка массивов и поиск элемента в массиве
- •2.4.3. Многомерные массивы
- •2.5. Функции и процедуры
- •2.5.1. Описание функций
- •2.5.2. Обращение к функции
- •2.5.3. Процедуры
- •2.5.4. Параметры-значения и параметры-переменные
- •2.5.5. Локальные и глобальные переменные
- •2.5.6. Pекурсия
- •2.6. Строки символов
- •2.6.1. Задание строк
- •Var имя: string[длина];
- •2.6.2. Функции и процедуры для обработки строк
- •2.7. Порядковые типы данных
- •2.7.1. Перечисляемый тип данных
- •2.7.2. Интервальный тип данных
- •2.7.3. Порядковые типы данных
- •2.7.4. Дополнение:тип данных tDateTime (дата-время)
- •2.8. Множества
- •2.8.1. Значения типа множество
- •2.8.2. Операции на множествах
- •2.9. Записи
- •2.9.1. Поля записи
- •2.9.2. Оператор with
- •2.9.3. Последовательный поиск в массиве записей
- •2.9.4. Двоичный поиск в массиве записей
- •2.10. Файлы
- •2.10.1. Основные свойства файлов
- •2.10.2. Типизированные файлы
- •2.10.3. Текстовые файлы
- •2.10.4. Поиск файлов
- •2.11. Динамическая память
- •2.11.1. Динамические переменные и указатели
- •2.11.2. Динамические списки
- •2.11.3. Деревья
- •2.12. Программные модули
- •2.12.1. Модули, формируемые пользователем
- •2.12.2. Стандартные модули
- •2.12.3. Примеры программ
- •3. Главная форма
- •3.1. Свойства главной формы
- •3.2. События главной формы
- •4. Описание некоторых компонентов
- •4.1. Компонент tpanel (панели)
- •4.2. Компонент tbutton (кнопка)
- •4.3. Дополнительные кнопки
- •4.4. Компонент tlabel (надписи)
- •4.5. Компонент tedit (Строки ввода)
- •4.6. Компонент тМето (многостроч. Поле ввода)
- •4.7. Свойства и методы класса tstrings
- •4.8. Компонент checkbox (флажок)
- •4.9. Компонент tradiobutton (кнопки выбора)
- •4.10. Компонент MainMenu (главное меню программы)
- •4.11. Компонент timage
- •4.12. Компонент tstringgrid (сетка)
- •4.13. Компонент ttimer(таймер)
- •5. Отладка программ
- •5.1. Типы ошибок
- •5.2. Отладка программы
- •5.2.1. Трассировка программы
- •5.2.2. Точки останова программы
- •5.2.3. Наблюдение значений переменных
- •Часть 2. Технология ado для баз данных access
- •6. Создание баз данных access
- •6.1. Определение понятия баз данных
- •6.2. Интерфейс программы access
- •6.3. Создание базы данных в access 2007
- •6.3.1. Создание двухтабличной базы данных
- •6.3.2. Создание базы данных с вычисляемыми полями
- •6.4. Выбop формата для новой базы данных
- •6.5. Создание пустой базы данных
- •6.6. Открытие и закрытие базы данных
- •6.7. Создание таблиц в режиме конструктора
- •6.7.1. Выбор первичного ключа
- •6.7.2. Изменение полей и таблиц
- •6.7.3. Копирование полей
- •6.7.4. Перемещение полей
- •6.7.5. Удаление полей
- •6.7.6. Операции с таблицами
- •6.8. Создание базы данных в access 2003
- •6.9. Установление связей между таблицами
- •6.10. Обеспечение целостности записей в базе данных
- •6.11. Редактирование и удаление связей
- •7. Система доступа к данным ado
- •7.1. Общие сведения
- •7.2. Компонент adoConnection
- •7.2.1. Свойства компонента adoConnection.
- •7.2.2. Методы компонента adoConnection
- •7.3.Компонент аdоТable
- •7.3.1. Свойства компонента tadoTable
- •7.3.2. Методы компонента tadoTable
- •7.4. Компонент adoQuery
- •7.5. Компонент adoDataSet
- •7.5.1.Свойства компонента adoDataSet
- •7.5.2. Методы компонента adoDataSet
- •7.5.3. Cобытия компонента adoDataSet
- •7.6. Компонент DataSource
- •7.7.Комнонент DataGrid
- •7.7.1 Cвойства компонента DataGrid
- •7.7.2. Методы и события компонента DataGrid
- •7.8. Компонент adocommand
- •8. Управление базами данных
- •8.1. Приложение для управления базами данных
- •8.2. Свойства полей базы данных
- •8.3. Редактирование базы данных
- •8.4. Сортировка данных
- •8.5. Поиск данных в базе
- •8.5.1. Фильтрация данных в базе
- •8.5.2. Нахождения информации методом Locate
- •9.1. Общие сведения
- •9.2. Основные операторы запроса
- •9.2.1. Агрегатные функции
- •9.2.2. Подзапросы
- •9.3. Операторы наполнения баз данных sql
- •9.3.1. Ввод значений
- •9.3.2. Удаление значений
- •9.3.3. Изменение значений
- •9.4. Операторы создания баз данных sql
- •9.4.1. Команда создания таблицы.
- •9.4.2. Первичные ключи таблицы
- •9.4.3. Индексы таблицы
- •9.4.4. Добавление в таблицу новых столбцов
- •10. Реализация sql- запросов
- •10.1. Компонент tadoQuery для sql- запросов
- •10.2. Форма для реализация sql-запроса
- •11. Генератор отчетов Quick Reports
- •11.1.Описание Quick Reports
- •11.2. Печать записи с помощью Quick Reports
- •11.3. Печать таблиц с помощью Quick Reports
- •394026 Воронеж, Московский просп., 14
8.2. Свойства полей базы данных
Чтобы выдать нужную информацию в том виде, в котором мы хотим, необходимо управлять отображением данных. Для этого сначала ознакомимся с основными свойствами полей
Так во второй таблице Оценки есть поле Key —это счетчик и его значение увеличивается автоматически, без участия пользователя.
Таким образом, это поле не несет никакой полезной информации, и, стало быть, отображать это поле нет необходимости.
Чтобы не отображать это поле нужно сделать следующее:
Перейти в модуль DataModule для настройки отображение данных.
Дважды щелкнуть в модуле DataModule мышью по компоненту OcenkaTable.
Перед вами появится окно редактирования полей второй таблицы базы данных Оценки.
Пока это окно пустое. В него нужно добавить все поля базы данных. Для этого нужно щелкнуть по нему правой кнопкой мыши и в появившемся меню выбрать пункт Add All Field (Добавить все поля). Окно автоматически заполнится именами полей.
Поля можно переставлять местами, двигая их мышью. При этом физическое положение их в базе данных не меняется. Однако при отображении данных в сетке они будут отображаться в том порядке, в каком они представлены в редакторе.
Таким образом, мы в любой момент можем изменить порядок отображения данных, не обращаясь к таблице самой базы данных.
Также можно выделять отдельные поля в объектном инспекторе и редактировать их свойства. Как говорилось выше, свойства у полей могут быть разные в зависимости от типа поля.
Продолжим работу с полями базы данных.
Ранее мы уже отметели, что видимость счетчика (поле Kеу) пользователю не нужна, и видеть его не обязательно.
Чтобы сделать поле Kеу не видимым, выделим это поле и в объектном инспекторе установим в его свойстве visible значение false (это свойство есть у всех полей).
Также можно отредактировать и другие свойства полей, например, длину отображения колонок.
Для этого выделим соответствующие поля.
За ширину колонки отвечает свойство Dispiaywidth (это свойство есть у всех полей). По умолчанию в нем стоит значение физической ширины поля, но мы можем указать там, например, 15.
Опять же на саму базу данных это не влияет и поле все еще имеет размер, заданный при создании базы данных, но ширина отображаемой колонки в сетке будет 15.
Рассмотрим еще несколько свойств полей. Некоторые из них видимы в инспекторе свойств, а другие будут видны только программно.
Итак поля имеют следующие основные свойства
Alignment — выравнивание во время отображения в сетке;
AsBoolean - вернуть значение поля текущей строки в виде булева значения;
AsCurrency-— вернуть значение поля в виде типа Currency (тип для хранения денежных значений);
AsDateTime— вернуть значение поля в виде даты и времени;
AsFloat— вернуть значение поля в виде вещественного числа;
AsInteger — вернуть значение поля в виде целого числа;
AsString— вернуть значение поля в виде строки;
AsVariant — вернуть значение поля в виде универсального типа Variant;
Value- возвращает значение поля в виде того типа данных, который больше. всего соответствует имеющемуся в базе данных типу. Дело в том ,что типы данных в БД и в Delphi могут различаться, например, число может быть объявлено в базе как number, но в Delphi такого типа нет, поэтому результат будет в виде числа Double;
CanModify — определяет, можно ли поле редактировать;
CurValue — отображает текущее значение поля, включая изменения, сделанные другим пользователем;
DataSet — набор данных DataSet, которому принадлежит поле;
DataSize — размер данных, выделенный в БД для хранения данных;
DisplayLabel — заголовок поля для сетки;
DisplayWidth— ширина поля при отображении в сетке;
EditMask— маска, используемая при редактировании значения поля;
FieldNo — номер/индекс поля в результате запроса или в таблице, если это набор данных TADOTable;
Index— индекс/номер поля при отображении;
IsNull— возвращает true, если поле содержит нулевое значение (null);
IsIndexField — возвращает true, если поле проиндексировано;
LookupDataset — поле поисковое, т. е. поиск будет происходить в другой таблице;
NewValue — измененное, но еще не сохраненное в базе значение;
Oldvalue — старое значение, до внесения изменений, т. е. то, что было прочитано из базы данных;
DefaultExpression — здесь можно оставить значение по умолчанию. В дальнейшем, когда будут создаваться новые строки, то в поля сразу будут заноситься указанные здесь значения;
MaxValue — максимально допустимое значение.
Если это поле имеет числовое значение, и оно должно изменяться в определенных рамках (например, от 0 до 100), то желательно указать эти ограничения здесь, чтобы сократить вероятность опечатки пользователя. Программа будет автоматически сокращать вероятность таких ошибок;
Minvalue - - минимально допустимое значение;
ReadOnly - - поле только для чтения. Если какое-то поле не должно изменяться, установите у него в свойстве ReadOnly значение true. В этом случае вы обезопасите программу от случайного изменения данного noля пользователем;
Required -- если здесь true, то поле является обязательным и обязательно должно иметь какое-то значение. Если пользователь ничего не укажет, то программа сообщит об этом. Допустим, что какое-то поле участвует в расчетах. Если в этом поле не окажется данных, то программа может виснуть. Есть два пути решения этой задачи. Первый путь — при расчете проверять наличие в поле данных или другой — требовать, чтобы пользователь обязательно что-то ввел. Второй путь предпочтительнее, если поле действительно важное. В этом случае представьте запись в Списке без Фамилии. Спрашивается, зачем тогда нужна такая запись. Таким образом, поле Фамилия можно сделать обязательным;
Tag — просто числовое значение, которое можно использовать по усмотрению программиста.
Теперь в нашем окне помещается практически вся необходимая информация и не надо лишний раз обращаться к базе данных.
Естественно, что в процессе работы может потребоваться замена или уточнение имени поля.
В этом случае можно поступить двумя способами:
редактировать имя поля в базе данных, что не всегда желательно);
заставить Delphi отображать в заголовке поля нужный текст.
Рассмотрим последний вариант.
За имя поля, отображаемое в заголовке, отвечает свойство DispayLabel (это свойство есть у всех полей).
Выделим поле и заменим в нем текст на новый. Теперь этот текст будет отображаться в заголовке поля.
Далее отредактируем формат отображения даты.
За формат отображения информации в поле отвечает свойство DisplayFormat. Тут можно указать текстовый формат, в котором можно отображать дату. Дату можно отображать и с помощью функции FormatDateTime.
При необходимости можно отредактировать и поле логического типа.
В этом поле отображаются значения true или false.
Если желательно видеть русские слова Да или Нет, то выделите это поле, и в объектном инспекторе найдите свойство DisplayValues.
Для булевых полей в этом свойстве нужно указать два значения в формате true ; false, т. е. сначала указывается положительное значение и после точки с запятой отрицательное.
Таким же образом можно указать и русские значения — Да ; Нет. Далее при редактировании полей логического типа не нужно вводить true или false, а можно вводить более понятные слова Да или Нет.