
- •1. Наборы данных
- •Var I: integer;
- •1.1. Состояния наборов данных
- •If not CheckBoxl.Checked then Abort;
- •If not CheckBoxl.Checked then begin
- •If CheckBox2.Checked then
- •If CheckBox2.Checked then begin
- •1.2. Режимы наборов данных
- •1.3. Доступ к полям
- •Var n: integer;
- •Var X: integer;
- •Var X: integer;
- •1.4. Особенности набора данных Table
- •If OpenDialogl.Execute then begin
- •Var n: integer;
- •If Editl.CanFocus then Editl.SetFocus;
- •1.5. Особенности набора данных Query
- •Interface
- •Implementation
- •2. Объекты поля
- •2.1 Редактор полей
- •2.2. Операции с полями
- •Var X: integer;
- •Var s: string;
- •X: real;
- •Var s: string;
- •X: real;
- •If not Tablel.Fields[2].IsValidChar(Editl.Text[1]) then
- •If (TablelCode.Required) and (TablelCode.IsNull)
- •3. Источник данных
- •Var n: integer;
- •1. Отображение и редактирование значения логического поля
- •2. Отображение и выбор значения поля
- •3. Отображение и выбор значения поля из списка
- •3.1. Простой и комбинированный списки
- •3.2. Списки, сформированные по значениям поля набора данных
- •4. Представление записей в табличном виде
- •4.1 Характеристики сетки
- •Var r :tRect;
- •4.2. Столбцы сетки
- •Var c, n :integer;
- •4.3. Использование модифицированной сетки
- •5. Использование навигационного интерфейса
- •6. Вывод графических изображений
- •Interface
- •Implementat ion
- •If OpenPictureDialogl.Execute then
- •If SavePictureDialogl.Execute then
- •7. Построение диаграмм
- •Var n: integer;
1.5. Особенности набора данных Query
Компонент Query представляет собой набор данных, записи которого формируются в результате выполнения SQL-запроса и основаны на реляционном способе доступа к данным. При работе с удаленными БД рекомендуется использовать именно набор данных Query.
Замечание
При работе с удаленными БД следует обращаться к средствам языка SQL. Это относится и к таким операциям, как перемещение по набору данных или вставка в него записей. Если же для компонента Query используются методы типа Next или insert, то вместо реляционного способа доступа к удаленным данным будет применен навигационный. В результате набор данных Query будет мало чем отличаться от набора данных Table.
В отличие от компонента Table, набор данных Query может включать в себя записи более чем одной таблицы БД.
Текст запроса, на основании которого в набор данных отбираются записи, содержится в свойстве sql типа TStrings. Запрос включает в себя команды на языке SQL и выполняется при открытии набора данных. Запрос SQL иногда называют SQL-программой.
При формировании запроса на этапе разработки приложения можно использовать текстовый редактор (рис. 7.3), вызываемый через Инспектор объектов двойным щелчком в области значения свойства SQL.
Рис. 7.3. Редактирование запроса SQL
SQL-запрос также можно формировать и изменять динамически, внося изменения в его текст (значение свойства sql компонента Query) непосредственно при выполнении приложения.
Замечание
В процессе формирования SQL-запроса проверка его правильности не производится, и если в запросе имеются ошибки, то они выявляются только при открытии набора данных. Одним из вариантов предотвращения ошибок в SQL-запросе является его предварительная отладка, например, с помощью программы Database Desktop.
Рассмотрим пример приложения — простейшего редактора, позволяющего подготавливать и выполнять SQL-запросы. На рис. 7.4 показана форма приложения при его выполнении. Кроме визуальных компонентов, форма содержит два компонента доступа к данным Queryl и DataSourcel, которые при выполнении приложения не видны.
Рис. 7.4. Приложение-редактор SQL-запросов
Редактирование SQL-запроса осуществляется с помощью компонента Memoi. Набранный запрос выполняется при нажатии кнопки Buttonl с заголовком Выполнить, а результат выполнения отображается в компоненте DBGrid1.
При наличии в тексте SQL-запроса ошибки генерируется исключительная ситуация и выдается сообщение об ошибке (рис. 7.5), а результат запроса оказывается не определен. При этом набор данных Queryl автоматически закрывается.
Значения свойств DataSet источников данных DataSourcel И DataSource компонента DBGridi, с помощью которых организуется взаимодействие компонентов Queryl, DataSourcel и DBGridi, устанавливаются при создании формы. В последующих примерах приложений значения этих свойств задаются через Инспектор объектов, поэтому операторы, присваивающие свойствам необходимые значения, в модуле формы отсутствуют.
Рис. 7.5. Сообщение об ошибке в тексте SQL-запроса
Приведем код модуля uSQLEdit формы Forml приложения:
unit uSQLEdit;