
- •Оглавление
- •Часть 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. Управление базами данных
8.1. Приложение для управления базами данных
Составим приложение (программу), которое будет управлять из Delphi созданной базой данных MS Access 2007 в формате Access 2003 по технологии ADO, в нашем случае с базой данных Обучение
Программа управления базой данных может содержать несколько окон и соответственно модулей.
Вначале создадим основную форму для этого приложения, которую назовем Главной (MainForm), а модуль, в котором она сохранена, – MainUnit.
Затем создадим специальную форму для хранения компонентов ADO
Для этого выберем команды - меню File | New | Data Module - и этим заставим Delphi создать отдельное окно формы DataModule, которое удобно подходит для хранения компонентов доступа к базам данных (рис. 8.1).
Рис. 8.1
Сохраним это окно в модуле DataModuleUnit.
Для начала с вкладки dbGo палитры инструментов Delphi 2009 поместим на форму Data Module специального модуля DataModuleUnit компонент ADOConnection.
Теперь установим связь Главной формы с окном Data Module, содержащим компонент ADOConnection.
Для этого откроем главную форму (MainForm).
Из меню File выберем пункт Use Unit, в этот момент Главное окно должно быть открыто (выделено).
В появившемся окне нужно выбрать имя модуля DataModuleUnit и нажать кнопку OK.
Теперь нужно проверить, чтобы в редакторе кода Главной формы (MainForm) после ключевого слова implementation появилась запись — uses DataModuieUnit.
Эту запись в редакторе кода Главной формы (MainForm)можно сделать и вручную.
Далее настроим соединение c сервером, которое должно быть указано в свойстве ConnectionString компонента ADOConnection.
Однако задавать свойство ConnectionString путем прямого указания требуемых параметров в строке соединения ConnectionString не очень удобно
Для этой цели обычно используется редактор (мастер) параметров соединения, который может быть вызван двойным щелчком по компоненту ADOConnection или щелчком по кнопке … в поле справа от свойства ConnectionString в Инспекторе объектов.
В результате этих действий откроется окно редактора ADOConnection 1 ConnectionString (см. раздел 7.2, рис. 7.1).
В этом окне нужно выполнить одно из следующих действий:
использовать специальный файл (Use Data Link File),
использовать ручную настройку строки подключения (Use Connection String),
использовать мастер для создания строки подключения.
Остановимся на последнем варианте.
Чтобы запустить мастер, щелкнем мышью по кнопке Build окна ADOConnection 1 ConnectionString (см. раздел 7.2, рис. 7.1)..
Перед нами откроется окно Свойства связи с данными с четырьмя вкладками.
На вкладке Поставщик данных (Provider) (см. раздел 7.2, рис. 7.2) перечислены все возможные для ADO драйвера доступа к базам данных..
Согласно сказанному ранее, выбираем драйвер Microsoft Jet 4.0 OLE DB Provider (см. раздел 7.2, рис. 7.2).
После этого, нажав кнопку Далее (Next), переходим на вкладку Подключение (Connection) (см. раздел 7.2, рис. 7.3).
На вкладке Подключение в первую очередь заполним следующие поля.
Пользователь (User name). Значение поля можно оставить по умолчанию, если не задано иное при создании базы в MS Access.
Пароль (Password). Если база имеет пароль, то его необходимо указать.
Пустой пароль (Blank password). Если пароль не нужен, то здесь желательно поставить флажок.
Разрешить сохранение пароля (Allow saving password). Если здесь поставить флажок, то пароль может быть сохранен. Если нет, то при каждом запуске программы будет появляться окно с просьбой ввести пароль.
Далее выбираем файл базы данных.
Чтобы легче было выбрать файл базы данных(см. раздел 7.2, рис. 7.1)., необходимо щелкнуть мышью по кнопке с точками .. справа от строки ввода. Появится окно Выберите базу данных. (далее см раздел 7.2).
Если база данных будет располагаться в той же папке, что и исполняемый файл приложения, то путь указывать не обязательно.
Если хотите держать файлы в другом каталоге, то указывайте относительный путь (относительно текущего каталога)
После выбора базы данных, нужно нажать на кнопку Проверьте подключение (Test Connection), чтобы протестировать соединение. Если все сделано правильно, то должно появиться сообщение Test connection succeeded (Тестирование соединения прошло удачно).
Теперь нужно нажать ОК, чтобы закрыть окно создания строки подключения. Затем еще раз нажать ОК, чтобы закрыть окно редактора строки подключения.
Затем в свойствах компонента ADOConnection отключим свойство LoginPrompt, выставив его в false.
Это нужно для того, чтобы при каждом обращении к базе не происходил вызов пароля, если никаких паролей не назначалось.
Далее выставим свойство Connected в true, чтобы произошло соединение с базой.
Свойству Connected можно непосредственно в программе присвоить значение true перед обращением к базе данных.
После этих действий соединение с базой данных будет выполнено.
Теперь получим доступ к таблице Список созданной базы данных Обучение.
Для этого поместим в окно специального модуля DataModuleUnit компонент ADOTable с вкладки dbGo палитры инструментов Delphi 2009.
Чтобы компонент ADOTable был похож на созданную таблицу Список, изменим его имя, т.е. изменим его свойство Name на SpisokТаblе.
Вообще говоря, в этом компоненте тоже есть свойство ConnectionString и его также можно настраивать. Но для того, чтобы этого не делать, используем установленный на форме компонент ADOConnection.
Для этого у компонента SpisokТаblе в свойстве Connection указываем созданный нами компонент соединения с базой данных, т.е. вместо заполнения свойства ConnectionString щелкаем по ниспадающему списку в свойстве Connection и выбираем пункт ADOConnection1.
В свойстве TableName задаем имя нашей таблицы (Список).
Аналогично, для получения доступа ко второй таблице Оценки, помещаем в окно специального модуля DataModuleUnit еще один компонент ADOTable с вкладки dbGo палитры инструментов Delphi 2009и также изменяем его имя, т.е. изменяем его свойство Name на OcenkaТаblе.
Далее у нашего компонента OcenkaТаblе в свойстве Connection указываем созданный нами компонент соединения с базой данных. Для этого также щелкаем по ниспадающему списку, и в свойстве Connection выбираем пункт ADOConnection1.
В свойстве TableName задаем имя нашей таблицы Оценки.
Итак, Таблицы созданы, и соединение с ними выполнено. Теперь можно подключаться.
Для этого в инспекторе объектов для компонентов SpisokТаblе и OcenkaТаblе выставим свойства Active в true или сделаем это в программе перед обращением к таблицам базы данных.
Для отображения данных из таблиц поместим в окно специального модуля DataModuleUnit два компонента DataSource с вкладки Data Access палитры инструментов.
Чтобы различать эти компоненты, изменим их имена, т.е. изменим их свойства Name соответственно на SpisokSource и OcenkaSource.
Этим компонентам надо указать, какую именно таблицу каждый из них должен отображать.
Для этого в свойстве DataSet каждого компонента нужно из ниспадающего списка выбрать соответственно компонент SpisokTable или OcenkaTable, который связан с нужной таблицей.
Теперь можно приступать к реальному отображению данных.
Самый простой способ отобразить первую таблицу Список – это установить на Главной форме (Main Form) компонент DBGrid.
Компонент DBGrid — это сетка, которая может отображать данные в виде таблицы. В этом же компоненте можно добавлять, удалять и редактировать строки нашей таблицы.
Следующий этап создания приложения — это связывание компонента сетки с компонентом отображения таблицы Список.
Для этого в свойстве DataSource компонента DBGrid нужно указать созданный нами компонент SpisokSource., данные которого должны быть отображены в сетке (DataModule.SpisokSource).
Для отображения таблицы Оценки с помощью команд File|New|Form создаем новую форму Form3, которую сохраняем в модуле Unit3.
На форму Form3 устанавливаем компонент DBGrid и связываем компонент сетки с компонентом отображения таблицы Оценки.
А именно, для этого в свойстве DataSource компонента DBGrid устанавливаем созданный нами компонент OcenkaSource, данные которого должны быть отображены в сетке (DataModule. OcenkaSource).
Для закрытия формы Form3 и перехода к Главной форме устанавливаем на Form3 компонент TButton с надписью Закрыть и пишем для него следующий обработчик события:
Close;
Form1.Show
Окно формы Data Module с установленными на нем всеми компонентами, включая и компоненты поиска информации, изображено на рис. 8.2
Рис.8.2
Далее возвращаемся в Главную форму, на которой для отображения таблицы Оценки устанавливаем компонент TButton c надписью Показать табл. 2, при нажатии на который будет показана вторая таблица Оценки
Для компонента TButton создаем следующий обработчик события:
DataModule1.OcenkaTable.Active:=true;
Form3.Show;
Итак, приложение для работы с базами данных создано.
Теперь научим приложение обрабатывать и выдавать нужную информацию.