Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Failid.DOC
Скачиваний:
14
Добавлен:
31.03.2015
Размер:
266.24 Кб
Скачать

6.2. Использование языка sql в Delphi

В гл. 5 мы построили следующую цепочку (на самом деле упрощенную) от данных на диске до таблицы на экране

Table DataSource DBEdit

DBGrid

Вспомним, что мы имели возможность выбора полей, которые будут представлены на экране в таблицах, имели средства для улучшения внешнего вида таблиц, но не имели возможности выполнения поисковых операций и сортировки. Для использования языка SQL в Delphi необходимо заменить объект Table на Query и получим следующую цепочку

Query DataSource DBEdit

DBGrid

Объект Query находится в палитре Data Access и его легко узнать по буквам SQL и вопросительному знаку. На создаваемой форме должны быть компоненты Query, DataSource, DBGrid и/или DBEdit. Работа со знакомыми нам объектами ничем не отличается от описанного в § 5.4, за исключением того, что свойству DataSet объекта DataSource вместо значения Table1 (2, 3, ...) дадим значение Query1 (2, 3,...) путем выбора из выпадающего списка. Поэтому можем ограничиться рассмотрением лишь компоненты Query. Для нас существенны следующие его свойства (как и для Table, они должны быть заданы в строго определенной очередности):

  1. DataВaseName – значением является, как и при Table, путь до файла с данными.

  2. SQL – содержит программу.

  3. Active – имеет два возможных значения: True и False.

Если в программе на SQL допущена ошибка, то при попытке дать значение True свойству Active выдается диагностическое сообщение о программе. Свойство SQL имеет три точки, что означает наличие диалогового окна для написания программы. Повторим приведенную рекомендацию: операторы SQL пишем большими буквами и каждый оператор с новой строки, все остальное маленькими буквами и за оператором, к которому оно относится. При возникновении необходимости внесения изменений в программу на SQL, необходимо сначала переключить значение свойства Active на False, внести необходимые изменения и затем снова переключить на True. Для улучшения внешнего вида таблицы на экране поступим точно так, как при работе с Table: делаем двойной щелчок по иконке Query: откроется знакомое нам диалоговое окно Form1.Query1; работа с ним ничем не отличается от описанного выше. Для DBEdit можно из списка выбрать для представления поля из списка полей после оператора SELECT.

Описанный только что способ включения в наше приложение программы на SQL является простейшим, но и весьма ограниченным: для внесения любого изменения придется остановить приложение, менять программу в свойстве SQL объекта Query и запустить приложение снова. Имеется возможность изменить программу на SQL не останавливая приложение. Для этого на форму необходимо перенести следующие компоненты: Query, DataSource, DBGrid (или DBEdit); Memo и Button из палитры Standard (рис.6.2). Memo отличается от знакомой нам компоненты Edit только тем, что может содержать несколько строк текста. Нетрудно догадаться, что Memo нужно для представления текста программы на SQL, а кнопка для запуска этой программы.

Рис. 6.2. Окно для программы на языке SQL

Правила написания программы на SQL ничем не отличаются от описанных выше и поэтому мы на них останавливаться не будем. Реализация кнопки:

procedure TForm1.Button1Click(Sender: TObject);

begin

with Query1 do {Работаем с Query1}

begin

close; {Свойство Active получит значение False,}

{ как всегда перед внесением изменений}

SQL.Clear; {стираем старую программу на SQL}

SQL.Add(Memo1.Text);{подключаем новую программу на SQL}

Open; {свойство Active получит значение True,}

{ как всегда после внесения изменений}

end;

end;

Этими средствами можно менять программу на SQL во время выполнения приложения. Если мы пользуемся только динамическими полями, то никаких сложностей при этом не ожидается. При работе со статическими полями возникают те же проблемы, которые мы обсуждали в п. 5.4.1 при работе с Table.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]