- •Оглавление
- •Часть 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
7.5.1.Свойства компонента adoDataSet
Ниже рассмотрены основные, кроме рассмотренных ранее, свойства компонента ADODataSet
Active - Это свойство обеспечивает открытие набора данных при установке в true и его закрытие при установке в false.
BlockReadSize - Этим свойством определяется число записей, составляющих один блок. Это свойство позволяет организовать пересылку записей по блокам, что ускоряет процесс передачи данных. По умолчанию свойство имеет значение 0, и блочная пересылка не применяется. Если же изменить значение свойства, то набор данных автоматически перейдет в состояние dsBlockRead (свойство State). Блочная пересылка может быть использована в тех случаях, когда нет необходимости отображать данные в визуальных компонентах.
CacheSize – Это свойство определяет размер буфера, в котором размещаются данные после передачи их клиенту. Это свойство задает число записей, которые будут помещаться в буфер. По умолчанию это свойство имеет значение 1 и не может быть меньше.
Connection - Это свойство ссылается на компонент ADOConnection, с помощью которого обеспечивается связь с базой данных.
ConnectionString - Это свойство обеспечивает доступ к базе данных при непосредственном задании строки соединения.
CursorLocation - Это свойство определяет, где будет находится курсор, на сервере или на клиентской стороне.
ExecuteOptions - Это свойство определяет способ выполнения команды. Это свойство может принимать такие же значения, как и одноименное свойство компонента ADOCommand. (более подробно см. ниже)/
MaxRecords - Это свойство позволяет задать максимальное число записей набора данных. По умолчанию это свойство равно 0 (таким образом, набор данных не ограничен).
LockType - Это свойство задает тип блокировки, используемый при редактировании записей (например, блокировка на время сохранения или на время редактирования, включение режима только для чтения и т. д.)
RecordCount - Это свойство содержит сведения о количестве записей, содержащихся в наборе данных, в текущий момент времени.
RecordSize - Это свойство позволяет узнать размер одной записи в байтах.
RecordsetState - Это свойство дает возможность определить текущее состояние набора данных. Значения этого свойства аналогичны значениям свойства State компонента соединения ADOConnection.
RecordStatus - Это свойство служит для определения состояния текущей записи набора данных (например, позволяет узнать, что запись была добавлена, удалена, изменена, сохранена или не сохранена по различным причинам).
State - Это свойство определяет состояние набора данных в текущий момент времени (например, dslnactivate -набор данных закрыт, dsBrowse - набор данных в состоянии просмотра, dsEdit - редактирование записи, dsInsert - вставка записи, dsSetKey -поиск записи, dsBlockRead - чтение блока записей и т. д.). Это свойство доступно только для чтения при выполнении приложения
Рассмотрим еще некоторые важные свойства Компонента ADODataSet.
CursorType- Это свойство устанавливает один из таких типов курсора (в ADO курсор представляет собой возвращаемый клиентскому приложению набор записей таблицы базы данных и связанный с ним указатель текущей записи):
ctOpenForwardOnly - однонаправленный курсор, обеспечивающий перемещение по таблице базы данных только вперед. Этот курсор потребляет минимум ресурсов, поскольку после перехода на следующую запись ресурсы, связанные с предыдущей записью освобождаются, и она больше не может быть прочитана. Данный тип курсора используется обычно для отчетов и анализа данных без их изменения;
ctStatic - статический курсор, который показывает данные в том состоянии, в котором они были в момент открытия курсора(т.е. курсор не отображает изменения данных, внесенных другими пользователями, до тех пор, пока набор данных не будет открыт заново). При использовании данного курсора допускается перемещение по набору данных как вперед, так и назад;
ctDynamic - динамический курсор, располагаемый, как правило, на стороне, сервера. Данные, измененные другими пользователями, обновляются в таком курсоре автоматически. Динамический курсор потребляет максимум ресурсов. Этот тип курсора поддерживается не всеми поставщиками данных. Он позволяет перемещаться по записям набора данных в двух направлениях - вперед и назад;
ctKeyset - курсор, который представляет собой нечто среднее между статическими и динамическими курсорами. При использовании этого типа курсора запоминаются ключевые поля всех записей на момент его открытия. Изменения, внесенные другими пользователями, видны, если они не изменяют ключевые поля. Записи, добавленные другими пользователями, не видны до тех пор, пока курсор не будет открыт повторно. При удалении записи ключевое поле записи сохраняется в курсоре, хотя сама запись в таблице уже отсутствует. Этот тип курсоров лучше использовать, если записи преимущественно изменяются, а не удаляются и добавляются;
ctUnspecified - курсор не определен, его тип определяется источником данных.
Свойство Sort обеспечивает возможность сортировки по произвольно заданному набору полей. Поля указываются через запятую. Помимо этого, дополнительно может устанавливаться признак прямого (ASC) или обратного (DESC) порядка сортировки. Если порядок не указан, то по умолчанию сортировка осуществляется по возрастанию, например:
ADODataSet.Sort:"= 'Fieldl DESC, Field2 ASC, Fields1;
В данном случае сортировка вначале осуществляется в порядке убывания по полю Fieldl, затем в порядке возрастания по полю Field2 и, наконец, в порядке возрастания по полю Fields.
Свойство Parameters обеспечивает возможность задания параметров SQL-запроса или хранимой процедуры. Данное свойство является объектом класса TParameters и в свою очередь обладает собственным набором свойств. Важнейшими из них являются:
Items — представляет собой индексированный список, который позволяет обращаться к параметрам по их порядковым номерам;
ParamValues - позволяет получить текущие значения указанных параметров.
Доступ к конкретному значению обеспечивается по имени параметра, например:
Editl.Text:= ADODataSetl. Parameters. ParamValues['Paraml'];
Это свойство обеспечивает возможность передачи параметров в запрос, на основе которого формируется набор данных.
Среди методов класса TParameters можно выделить следующие:
Метод CreateParameter(const Name: WideString; DataType: TDats-Type; Direction: TParameterDirection; Size: Integer; Value: OleVa--ant): TParameter создает новый параметр и задает его свойства.
Здесь:
Name — имя параметра;
DataType - тип значения параметра, который должен соответствовать типу поля таблицы БД;
Direction — направление передачи данных через параметр (подробнее см. ниже);
Size - максимальный размер значения параметра строкового типа (иными словами, длина строки для параметров типа String);
Value — значение параметра.
Метод AddParameter: TParameter добавляет к списку новый параметр. После этого должны быть дополнительно установлены все необходимые свойства нового параметра.
Метод ParamByName(const Value: WideString): TParameter обеспечивает возможность обращения к параметру по его имени, а не по индексу.
Метод Refresh служит для обновления списка параметров, чтобы он соответствовал запросу или хранимой процедуре.
Для каждого параметра из списка TParameters создается отдельный объект класса TParameter. Этот объект также обладает собственным набором свойств и методов, самыми важными из которых являются следующие:
Свойства Name, DataType, Size, Value аналогичны одноименным параметрам рассмотренного выше метода CreateParameter.
Свойство Attributes задает список атрибутов, которые определяют, допустимы ли некоторые специальные значения параметра. Это свойство может принимать комбинацию таких значений:
paSigned - значение параметра может иметь знаковые различия, т. е. быть как положительным, так и отрицательным;
paNullable — значение параметра может быть пустым;
paLong - параметр может содержать двоичные данные.
Свойство Direction устанавливает направление передачи данных через параметр и может иметь одно из следующих значений:
pdllnknown - неизвестный тип параметра, который будет определяться самим источником данных;
pdlnput - входной параметр, который используется в запросах и хранимых процедурах;
pdOutput - выходной параметр, который применяется в хранимых процедурах;
pdlnputOutput - параметр является входным и выходным одновременно (обычно используется в хранимых процедурах);
pdReturnValue - параметр используется для передачи возвращаемого значения.
Метод LoadFromFile(const FileName: String; DataType: TDataType) класса TParameter позволяет загрузить значение параметра из файла.Метод LoadFromStream(Stream: TStream; DataType: TDataType) класса TParameter обеспечивает возможность загрузки значения параметра из потока класса TStream.