Визуальный построитель запросов на извлечение

TForm1.UpdateSelectedFields;i, count: Byte;:= ;:= 0;CheckBox_AllFields.Checked then begin:= *;i := 0 to 4 do begin_Fields.Checked[i] := TRUE;CheckListBox_GroupBy.Items.IndexOf(CheckListBox_Fields.Items[i]) = -1 then begin_GroupBy.Items.Add(CheckListBox_Fields.Items[i]);;CheckListBox_OrderBy.Items.IndexOf(CheckListBox_Fields.Items[i])

Визуальный построитель запросов на извлечение

Дипломная работа

Компьютеры, программирование

Другие дипломы по предмету

Компьютеры, программирование

Сдать работу со 100% гаранией
ую выполняет визуализатор запросов, состоит в построении SQL-запроса с параметрами, указанными пользователем. Представить алгоритм работы можно в виде схемы (рисунок 1).

 

Рисунок 1 - Алгоритм работы приложения

 

Из схемы видно, что для составления корректного запроса обязательно указать как минимум необходимые поля и таблицы, из которых будут извлекаться эти поля. Но также могут быть добавлены дополнительные условия - услвия запроса, группировки и сортировки.

 

3.2 Интерфейс приложения

 

Приложение было написано в среде разработки Borland Delphi 7. Были использованы стандартные элементы управления (GroupBox, CheckBox, Memo, RadioGroup и т.д.).

Для создания запроса на извлечение данных пользователю необходимо указать необходимые параметры (извлекаемые поля, таблицы, из которых извлекаются данные, условия запроса, группировки и сортировки). При этом пользователь должен обладать минимальными знаниями в области составления SQL-запросов.

При запуске программы на экране отображается главное окно, которое содержит элементы управления для изменения параметров составляемого запроса (рисунок 2).

 

Рисунок 2 - Внешний вид приложения

 

Программа имитирует работу (создает запросы) с учебной базой данных, содержащей две таблицы - Преподаватели и Студенты. Возможные атрибуты: порядковый номер, имя, фамилия, факультет, курс.

В списке Извлекаемые поля следует выбрать поля, которые будет содержать результирующая таблица после выполнения запроса. Есть возможность быстрого выбора всех полей - выключатель Все поля. При его включении в запрос вместо перечисления всех полей добавляется ключевой символ «*».

Если включен режим Исключение дубликатов, то в запрос будет добавлено ключево слово DISTINCT и в результирующем отношении будут устранены значения-дубликаты.

В списке Таблицы следует выбрать таблицы, из которых производится извлечение данных (раздел FROM запроса).

В разделе Условия запроса можно накладывать дополнительные условия по выборке данных (раздел WHERE запроса). Для этого следует выбрать из выпадающих списков сопоставляемые величины (или ввести значения вручную) и нужный предикат, а затем нажать кнопку Добавить условие. Также можно менять способ логической связи между условиями (И, ИЛИ). Ненужные (неправильные) условия можно удалить, выбрав соответсвующее условие в списке и нажав кнопку Удалить условие.

В списке Группировка можно добавить поля, по которым будет проводиться группировка результируищих данных (раздел GROUP BY запроса). При этом можно добавлять дополнительные условия для группировки (раздел HAVING запроса) с использовнием агрегирующих функций.

В списке Сортировка можно выбрать поля, по которым будет произведена сортировка (раздел ORDER BY запроса). Также с помощью переключателя Направление можно выбрать направление сортировки - прямое или обратное.

В списке Временные таблицы можно выбрать способ использования вспомогательных таблиц (раздел INTO запроса). При выборе пункта Обычный метод в запрос будет добавлено ключевое слово TEMP. Вариант SCRATCH отличается от TEMP тем, что временная таблица фрагментируется по всем дискам.

В поле SQL-запрос генерируется созданный запрос. Это происходит автоматически при любом изменении параметров запроса.

визуальный построитель selekt запрос

 

Заключение

 

Целью данной курсовой работы было создание приложения, реализующего визуальное создание запросов на извлечение данных.

В результате проведенной работы был рассмотрен теоретический материал по теме SQL-запросов, было написано приложение (визуальный построитель запросов на извлечение).

 

 

Список использованной литературы

 

1. Кузнецов, С.Д. Основы современных баз данных [Текст]: учебное пособие. - М.: Интернет-университет информационных технологий, 2007. - 720 с.

. Свободная энциклопедия [Электронный ресурс]. - SQL - Википедия. - Режим доступа: http://ru.wikipedia.org/wiki/SQL.

 

 

Приложение А (обязательное)

 

Листинг программы

Unit1;

 

interface

, SysUtils, Graphics, Controls, Forms, StdCtrls, Classes, CheckLst,, ExtCtrls, Math;

= class(TForm)_Querry: TGroupBox;_Tables: TGroupBox;_GroupBy: TGroupBox;_Fields: TGroupBox;_Having: TGroupBox;_OrderBy: TGroupBox;_Where: TGroupBox;_NewCondition: TGroupBox;_Querry: TMemo;_Having: TMemo;_Tables: TCheckListBox;_GroupBy: TCheckListBox;_Fields: TCheckListBox;_OrderBy: TCheckListBox;_Distinct: TCheckBox;_AllFields: TCheckBox;_OrderBy: TRadioGroup;_Into: TRadioGroup;_Agg: TComboBox;_Where1: TComboBox;_Where2: TComboBox;_Where3: TComboBox;_Agg: TSpeedButton;_NewCondition: TSpeedButton;_DeleteCondition: TSpeedButton;_AND: TSpeedButton;_OR: TSpeedButton;_Where: TListBox; ListBox_Logics: TListBox;

CheckListBox_TablesClickCheck(Sender: TObject);CheckBox_DistinctClick(Sender: TObject);UpdateSelectedFields;UpdateSelectedTables;UpdateSelectedGroups;UpdateHaving;UpdateWhere;UpdateOrder;UpdateInto;UpdateQuerry;CheckBox_AllFieldsClick(Sender: TObject);SpeedButton_AggClick(Sender: TObject);CheckListBox_GroupByClick(Sender: TObject);CheckListBox_FieldsClickCheck(Sender: TObject);Memo_HavingChange(Sender: TObject);CheckListBox_OrderByClickCheck(Sender: TObject);RadioGroup_OrderByClick(Sender: TObject);RadioGroup_IntoClick(Sender: TObject);Memo_WhereChange(Sender: TObject);ComboBox_Where2Change(Sender: TObject);SpeedButton_NewConditionClick(Sender: TObject);SpeedButton_DeleteConditionClick(Sender: TObject);SpeedButton_ANDClick(Sender: TObject);SpeedButton_ORClick(Sender: TObject);;

: TForm1;,,,,,,: String;

 

 

{$R *.dfm}

TForm1.UpdateSelectedFields;i, count: Byte;:= '';:= 0;CheckBox_AllFields.Checked then begin:= '*';i := 0 to 4 do begin_Fields.Checked[i] := TRUE;CheckListBox_GroupBy.Items.IndexOf(CheckListBox_Fields.Items[i]) = -1 then begin_GroupBy.Items.Add(CheckListBox_Fields.Items[i]);;CheckListBox_OrderBy.Items.IndexOf(CheckListBox_Fields.Items[i]) = -1 then begin_OrderBy.Items.Add(CheckListBox_Fields.Items[i]);;ComboBox_Where1.Items.IndexOf(CheckListBox_Fields.Items[i]) = -1 then begin_Where1.Items.Add(CheckListBox_Fields.Items[i]);;ComboBox_Where3.Items.IndexOf(CheckListBox_Fields.Items[i]) = -1 then begin_Where3.Items.Add(CheckListBox_Fields.Items[i]);;;else begini := 0 to 4 do beginCheckListBox_Fields.Checked[i] then begin(count = 0) then begin:= CheckListBox_Fields.Items[i]else begin:= SelectedFields + ', ' + CheckListBox_Fields.Items[i];;(count);CheckListBox_GroupBy.Items.IndexOf(CheckListBox_Fields.Items[i]) = -1 then begin_GroupBy.Items.Add(CheckListBox_Fields.Items[i]);;CheckListBox_OrderBy.Items.IndexOf(CheckListBox_Fields.Items[i]) = -1 then begin_OrderBy.Items.Add(CheckListBox_Fields.Items[i]);;ComboBox_Where1.Items.IndexOf(CheckListBox_Fields.Items[i]) = -1 then begin_Where1.Items.Add(CheckListBox_Fields.Items[i]);;ComboBox_Where3.Items.IndexOf(CheckListBox_Fields.Items[i]) = -1 then begin_Where3.Items.Add(CheckListBox_Fields.Items[i]);;else beginCheckListBox_GroupBy.Items.IndexOf(CheckListBox_Fields.Items[i]) >= 0 then begin_GroupBy.Items.Delete(CheckListBox_GroupBy.Items.IndexOf(CheckListBox_Fields.Items[i]));;CheckListBox_OrderBy.Items.IndexOf(CheckListBox_Fields.Items[i]) >= 0 then begin_OrderBy.Items.Delete(CheckListBox_OrderBy.Items.IndexOf(CheckListBox_Fields.Items[i]));;ComboBox_Where1.Items.IndexOf(CheckListBox_Fields.Items[i]) >= 0 then begin_Where1.Items.Delete(ComboBox_Where1.Items.IndexOf(CheckListBox_Fields.Items[i]));;ComboBox_Where3.Items.IndexOf(CheckListBox_Fields.Items[i]) >= 0 then begin_Where3.Items.Delete(ComboBox_Where3.Items.IndexOf(CheckListBox_Fields.Items[i]));;ComboBox_Where1.Text = CheckListBox_Fields.Items[i] then begin_Where1.Text := '';;ComboBox_Where3.Text = CheckListBox_Fields.Items[i] then begin_Where3.Text := '';;;;;;

TForm1.UpdateSelectedTables;i, count: Byte;:= '';:= 0;i := 0 to 1 do beginCheckListBox_Tables.Checked[i] then begin(count = 0) then begin:= ' FROM ' + CheckListBox_Tables.Items[i]else begin:= SelectedTables + ', ' + CheckListBox_Tables.Items[i];;(count);;;;

TForm1.UpdateSelectedGroups;i, count: Byte;:= '';:= 0;CheckListBox_GroupBy.Items.Count > 0 then begini := 0 to CheckListBox_GroupBy.Items.Count-1 do beginCheckListBox_GroupBy.Checked[i] then begin(count = 0) then begin:= #13#10' GROUP BY ' + CheckListBox_GroupBy.Items[i]else begin:= SelectedGroups + ', ' + CheckListBox_GroupBy.Items[i];;(count);;;;;

TForm1.UpdateHaving;i: Byte;(CheckListBox_GroupBy.Items.Count > 0) AND

(Length(Memo_Having.Text) > 0) then begini := 0 to CheckListBox_GroupBy.Items.Count-1 do beginCheckListBox_GroupBy.Checked[i] then begin:= SelectedGroups + ' HAVING ' + Memo_Having.Text;;;;;;

TForm1.UpdateOrder;i, count: Byte;:= '';:= 0;(CheckListBox_OrderBy.Items.Count > 0) then begini := 0 to CheckListBox_OrderBy.Items.Count-1 do beginCheckListBox_OrderBy.Checked[i] then begin(count = 0) then begin:= #13#10' ORDER BY ' + CheckListBox_GroupBy.Items[i]else begin:= OrderBy + ', ' + CheckListBox_GroupBy.Items[i];;(count);;;(count > 0) then beginRadioGroup_OrderBy.ItemIndex of

: OrderBy := OrderBy + ' ASC';

: OrderBy := OrderBy + ' DESC';;;;;

TForm1.UpdateInto;RadioGroup_Into.ItemIndex of

: Into := '';

: Into := #13#10' INTO TEMP';

: Into := #13#10' INTO SCRATCH';;;

TForm1.UpdateWhere;i: Byte;: String[4];:= '';(ListBox_Where.Items.Count > 0) then begin:= #13#10' WHERE';i := 0 to ListBox_Where.Items.Count-1 do begini > 0 then beginListBox_Logics.Items[i-1] = 'И' then begin:= ' AND';else begin:= ' OR';;;:

Похожие работы

< 1 2 3 >